MFC 動態改變對話方塊控制項位置尺寸

2021-06-21 14:21:08 字數 1351 閱讀 8768

題記:第一種方法實踐時無法同時改變兩個控制項的位置,不知為何;

用cwnd類的函式movewindow()或setwindowpos()可以改變控制項的大小和位置。

void movewindow(int x,int y,int nwidth,int nheight);

void movewindow(lpcrect lprect);

第一種用法需給出控制項新的座標和寬度、高度;

第二種用法給出存放位置的crect物件;

例:cwnd *pwnd;

pwnd = getdlgitem( idc_edit1 ); //獲取控制項指標,idc_edit1為控制項id號

pwnd->movewindow( crect(0,0,100,100) ); //在視窗左上角顯示乙個寬100、高100的編輯控制項

setwindowpos()函式使用更靈活,多用於只修改控制項位置而大小不變或只修改大小而位置不變的情況:

bool setwindowpos(const cwnd* pwndinsertafter,int x,int y,int cx,int cy,uint nflags);

第乙個引數我不會用,一般設為null;

x、y控制項位置;cx、cy控制項寬度和高度;

nflags常用取值:

swp_nozorder:忽略第乙個引數;

swp_nomove:忽略x、y,維持位置不變;

swp_nosize:忽略cx、cy,維持大小不變;

例:cwnd *pwnd;

pwnd = getdlgitem( idc_button1 ); //獲取控制項指標,idc_button1為控制項id號

pwnd->setwindowpos( null,50,80,0,0,swp_nozorder | swp_nosize ); //把按鈕移到視窗的(50,80)處

pwnd = getdlgitem( idc_edit1 );

pwnd->setwindowpos( null,0,0,100,80,swp_nozorder | swp_nomove ); //把編輯控制項的大小設為(100,80),位置不變

pwnd = getdlgitem( idc_edit1 );

pwnd->setwindowpos( null,0,0,100,80,swp_nozorder ); //編輯控制項的大小和位置都改變

以上方法也適用於各種視窗。

mfc動態改變對話方塊視窗大小和顯示位置

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!void cmainframe onchangesize c 1 2 3 4 5 6 crect cr getclientrect cr 獲取對話方塊客戶區域大小 clienttoscreen cr 轉換為熒幕座標 intx getsystemme...

MFC 設定對話方塊位置

今天想寫個程式,需要對話方塊在螢幕的右下角。懶得想就去網上搜搜,不過卻沒找到什麼好的。大部分都是給個函式movewindow,或者setwindowpos卻不給大家寫用法。比如怎麼的到對話方塊的大小等等!反正就是不方便向我一樣新手學習。所以我今天就獻醜了,把這寫出來。雖然沒什麼難度,高手可不要鄙視阿...

改變MFC對話方塊背景色 控制項

改變mfc對話方塊背景色 控制項內的字型顏色和背景色 中天數字 c 設定 dialog,group box,static text,check box,edit ctrl disabled combo box disabled radio button等背景色 編寫wm ctlcolor訊息的對映函...