MFC獲取視窗大小

2021-07-07 09:26:20 字數 1681 閱讀 9421

1、獲取螢幕解析度

//

下邊兩個函式獲取的是顯示螢幕的大小,但不包括工作列等區域

int cx =getsystemmetrics(sm_cxfullscreen);

int cy =getsystemmetrics(sm_cyfullscreen);

//下邊這兩個函式獲取的是真正螢幕的大小:螢幕解析度

int nwidth=getsystemmetrics(sm_cxscreen); //

螢幕寬度

int nheight=getsystemmetrics(sm_cyscreen); //

螢幕高度

cstring strscreen;

strscreen.format(l

"%d,%d

",nwidth,nheight);

messagebox(strscreen);

2、獲取對話方塊窗體大小及其螢幕座標

//

對話方塊窗體大小及其螢幕座標

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

);//

更改控制項大小並移動其到指定位置

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);

總結:

1、getsystemmetrics()  -->  用於得到被定義的系統資料或者系統配置資訊;

2、getclientrect() -->  得到客戶區的位置和大小,一般用於獲取視窗大小;

3、getwindowrect() -->  得到視窗(對話方塊或控制項)的螢幕座標,一般用於獲取對話方塊的螢幕座標或和screentoclient()配合使用獲取控制項的客戶區座標;

4、screentoclient()  -->  螢幕座標轉換為客戶區座標,一般和getwindowrect()配合使用獲取控制項的客戶區座標

MFC視窗位置和大小的獲取

最近在做乙個專案,需要控制項隨對話方塊大小的變化而變化,因此需要準確獲取對話方塊視窗 控制項的大小和位置。經過好一番查尋 測試,終於看到了希望。下面是一些獲取視窗位置和大小的函式,示例如下 1 獲取螢幕解析度 下邊兩個函式獲取的是顯示螢幕的大小,但不包括工作列等區域 int cx getsystem...

獲取視窗大小

getclientrect 以視窗客戶區左上角為基準。getwindowrect 以螢幕左上角為基準。getwindowrect screentoclient getclientrect getclientrect clienttoscreen getwindowrect mapwindowpoin...

MFC 視窗控制代碼獲取

控制代碼獲取方法 獲取該視窗的控制代碼後,即可向該視窗類類傳送訊息 處理程式 0。獲取所在類視窗的控制代碼 this m hwnd 1。主視窗的控制代碼 無論在主視窗類內,還是子視窗類內,獲取主視窗控制代碼的方法 afxgetmainwnd m hwnd,如 sendmessage afxgetma...