VC對話框全屏顯示及相應控件位置改變
一、簡單對話框全屏顯示方法 在OnInitDialog()中任意加入: 1、ModifyStyle(WS_CAPTION,0,0); //如果不想去掉標題欄,去掉該句。 SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0); 2、ShowWindow(SW_SHOWMAXIMIZED); 二、複雜一點的對話框全屏顯示方法,隨屏幕的分辯率而調節
void CMainFrame::OnFullScreen() { 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); }
三、對話框全屏及按鈕控件移到相應位置 void CXXXDlg::OnLButtonDown(UINT nFlags, CPoint point) { int cx=::GetSystemMetrics(SM_CXSCREEN); int cy=::GetSystemMetrics(SM_CYSCREEN); CRect rtClient,rtBtn; CWnd *pWnd=GetDlgItem(IDC_BUTTON); GetClientRect(&rtClient); //獲得對話框客戶區屏幕坐標 ClientToScreen(&rtClient); //映射為屏幕坐標 pWnd->GetWindowRect(&rtBtn); //獲得button屏幕坐標 int lx=rtBtn.Width(); //button長度 int ly=rtBtn.Height(); //button高度 int dx=rtClient.right-rtBtn.right; //離右邊框的距離 int dy=rtClient.bottom-rtBtn.bottom; //離底邊框的距離 MoveWindow(CRect(0,0,cx,cy)); //移動窗口 pWnd->MoveWindow(CRect(cx-dx-lx,cy-ly-dy,cx-dx,cy-dy)); //移動button CDialog::OnLButtonDown(nFlags, point); }
四、設計狀態下指定對話框以全屏顯示
1、手工把它拽成比如1024×768, 然後Alt+V U
2、在*.rc文件中修改,但是單位不一樣。
五、用MoveWindow或SetWindowPos全屏對話框
首先計算出客戶區的大小GetClientRect();
再計算出整個窗口的大小GetWindowRect();
然後再得到當前屏幕的大小GetSystemMetrics();
最後根據這三個數據進行換算,當客戶區為屏幕大小時窗口的位置的大小;
計算完成後調用MoveWindow就可以了。
最後更新:2017-04-03 12:54:47