窗口設置最頂端,全屏

使窗口設置爲最大化,最頂層

int cxScreen,cyScreen;

cxScreen=GetSystemMetrics(SM_CXSCREEN);//獲得屏幕的寬度

cyScreen=GetSystemMetrics(SM_CYSCREEN);//獲得屏幕的高度

    SetWindowPos(&wndTopMost,0,0,cxScreen,cyScreen,SWP_SHOWWINDOW);//設置窗口爲最頂層

設置窗口爲最頂層,不可移動和改變尺寸

AfxGetMainWnd()->SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

多文檔的全屏顯示與退出

1.       在CMainFrame類中新增一下三個成員變量

WINDOWPLACEMENT m_OldWndPlacement; //用來保存原窗口位置

BOOL m_bFullScreen;//全屏顯示標誌

      CRect m_FullScreenRect; //表示全屏顯示時的窗口位置

2.       增加一個‘全屏顯示’菜單項,用於消息響應。點擊時,即全屏顯示;編輯消息響應處理函數:(消息響應函數在CMainFrame中)

     GetWindowPlacement(&m_OldWndPlacement);//獲取窗口位置

     CRect WindowRect;

     GetWindowRect(&WindowRect);//獲取窗口大小

     CRect ClientRect;

     RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &ClientRect);//獲取控制條窗口的大小

     ClientToScreen(&ClientRect);//轉換爲屏幕座標

     //獲取屏幕的分辨率

     int nFullWidth=GetSystemMetrics(SM_CXSCREEN);

     int nFullHeight=GetSystemMetrics(SM_CYSCREEN);

     //將除控制條外的客戶區全屏顯示到從(0,0)到(nFullWidth, nFullHeight)區域, 將(0,0)和(nFullWidth, nFullHeight)兩個點外擴充原窗口和除控制條之外的客戶區位置間的差值, 就得到全屏顯示的窗口位置

     m_FullScreenRect.left=WindowRect.left-ClientRect.left;

     m_FullScreenRect.top=WindowRect.top-ClientRect.top;

     m_FullScreenRect.right=WindowRect.right-ClientRect.right+nFullWidth;

     m_FullScreenRect.bottom=WindowRect.bottom-ClientRect.bottom+nFullHeight;

     m_bFullScreen=TRUE; //設置全屏顯示標誌爲 TRUE

     //進入全屏顯示狀態

     WINDOWPLACEMENT wndpl;

     wndpl.length=sizeof(WINDOWPLACEMENT);

     wndpl.flags=0;

     wndpl.showCmd=SW_SHOWNORMAL;

     wndpl.rcNormalPosition=m_FullScreenRect;

     SetWindowPlacement(&wndpl);

3.       爲CMainFrame類增加WM_GETMINMAXINFO消息,編輯代碼如下:

if(m_bFullScreen)

{

           //全屏顯示的大小

           lpMMI->ptMaxSize.x=m_FullScreenRect.Width();

           lpMMI->ptMaxSize.y=m_FullScreenRect.Height();

           //全屏顯示的位置

           lpMMI->ptMaxPosition.x=m_FullScreenRect.Width();

           lpMMI->ptMaxPosition.y=m_FullScreenRect.Height();

           //最大的Track尺寸也要改變

           lpMMI->ptMaxTrackSize.x=m_FullScreenRect.Width();

           lpMMI->ptMaxTrackSize.y=m_FullScreenRect.Height();

}

    CFrameWnd::OnGetMinMaxInfo(lpMMI);

4.       爲CMainFrame增加成員函數,退出全屏EndFullScreen();

if(m_bFullScreen)

{

           //退出全屏顯示, 恢復原窗口顯示

           ShowWindow(SW_HIDE);

           SetWindowPlacement(&m_OldWndPlacement);

     }

5.       在CxxxxView類中,增加WM_KEYDOWN消息響應函數;當用戶按下Esc鍵時,退出全屏

 

void CXXXXXXXView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

{

// TODO: Add your message handler code here and/or call default

if(nChar==VK_ESCAPE)//如果按的鍵爲Esc鍵

{

           //獲取主框架窗口的指針

           CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;

           //調用主窗口類的自定義函數 EndFullScreen ,退出全屏顯示狀態

           pFrame->EndFullScreen();

}

CView::OnKeyDown(nChar, nRepCnt, nFlags);

}


原文鏈接:http://blog.csdn.net/nuptboyzhb/article/details/7353429
發佈了5 篇原創文章 · 獲贊 9 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章