MFC中改變控制項的大小和位置,擴充套件例子

2021-05-05 01:49:12 字數 1319 閱讀 4434

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 );    //編輯控制項的大小和位置都改變

以上方法也適用於各種視窗。當然也適用於更種控制項

接下來 我給個靜態文字跟著滑鼠走的例子

新增wm_mousemove訊息事件

然後在onmousemove函式事件裡面新增如下語句

m_movetext.setwindowpos(null,point.x,point.y,0,0,swp_nosize); //m_movetext是跟靜態文字控制項繫結的乙個變數

試試看效果,好玩吧~

在MFC中改變控制項大小和位置

用cwnd類的函式movewindow 或setwindowpos 可以改變控制項的大小和位置。void movewindow int x,int y,int nwidth,intnheight void movewindow lpcrect lprect 第一種用法需給出控制項新的座標和寬度 高度...

MFC中改變控制項的大小和位置 zz

用cwnd類的函式movewindow 或setwindowpos 可以改變控制項的大小和位置。void movewindow int x,int y,int nwidth,int nheight void movewindow lpcrect lprect 第一種用法需給出控制項新的座標和寬度 高...

C MFC 改變控制項大小和位置

用cwnd類的函式movewindow 或setwindowpos 可以改變控制項的大小和位置。void movewindow int x,int y,int nwidth,int nheight void movewindow lpcrect lprect 第一種用法需給出控制項新的座標和寬度 高...