MFC窗口位置和大小的获取
最近在做一個(gè)項(xiàng)目,需要控件隨對(duì)話框大小的變化而變化,因此需要準(zhǔn)確獲取對(duì)話框窗口、控件的大小和位置。
經(jīng)過(guò)好一番查尋、測(cè)試,終于看到了希望。下面是一些獲取窗口位置和大小的函數(shù),示例如下:
1、獲取屏幕分辨率
//下邊兩個(gè)函數(shù)獲取的是顯示屏幕的大小,但不包括任務(wù)欄等區(qū)域 int cx = GetSystemMetrics(SM_CXFULLSCREEN); int cy = GetSystemMetrics(SM_CYFULLSCREEN); //下邊這兩個(gè)函數(shù)獲取的是真正屏幕的大小:屏幕分辨率 int nWidth=GetSystemMetrics(SM_CXSCREEN); //屏幕寬度 int nHeight=GetSystemMetrics(SM_CYSCREEN); //屏幕高度 CString strScreen; strScreen.Format(L"%d,%d",nWidth,nHeight); MessageBox(strScreen);2、獲取對(duì)話框窗體大小及其屏幕坐標(biāo)
//對(duì)話框窗體大小及其屏幕坐標(biāo) CRect rectDlg; //法1: GetClientRect(rectDlg);//獲得窗體的大小 //法2: //GetWindowRect(rectDlg);//獲得窗體在屏幕上的位置 //ScreenToClient(rectDlg); CString strDlg; strDlg.Format(L"%d,%d,%d,%d",rectDlg.left,rectDlg.top,rectDlg.Width(),rectDlg.Height()); MessageBox(strDlg);3、獲取控件大小和位置
//控件大小和位置 CRect rectCtrl; CStatic *p=(CStatic*)GetDlgItem(IDC_STATIC_TEST); p->MoveWindow(100,100,100,100);//更改控件大小并移動(dòng)其到指定位置 p->GetWindowRect(rectCtrl); this->ScreenToClient(rectCtrl); //GetDlgItem(IDC_STATIC_TEST)->GetClientRect(rectCtrl); CString str; str.Format(L"%d,%d,%d,%d",rectCtrl.left,rectCtrl.top,rectCtrl.Width(),rectCtrl.Height()); MessageBox(str);總結(jié):
1、GetSystemMetrics() ?--> ?用于得到被定義的系統(tǒng)數(shù)據(jù)或者系統(tǒng)配置信息;
2、GetClientRect() --> ?得到客戶區(qū)的位置和大小,一般用于獲取窗口大小;
3、GetWindowRect() --> ?得到窗口(對(duì)話框或控件)的屏幕坐標(biāo),一般用于獲取對(duì)話框的屏幕坐標(biāo)或和ScreenToClient()配合使用獲取控件的客戶區(qū)坐標(biāo);
4、ScreenToClient() ?--> ?屏幕坐標(biāo)轉(zhuǎn)換為客戶區(qū)坐標(biāo),一般和GetWindowRect()配合使用獲取控件的客戶區(qū)坐標(biāo);
轉(zhuǎn)載于:https://www.cnblogs.com/gaohongchen01/p/4596545.html
總結(jié)
以上是生活随笔為你收集整理的MFC窗口位置和大小的获取的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VC++获取操作系统的版本 GetVer
- 下一篇: JQuery 和JavaScript的区