MoveWindow函式用法

2021-10-04 13:54:47 字數 2622 閱讀 4856

一、movewindow

win32 api函式:

bool movewindow(hwnd hwnd, int x, int y, int nwidth, int nheight, bool brepaint);

cwnd類成員函式:

void movewindow(int x, int y, int nwidth, int nheight, bool brepaint = true);

//x left, y top, nwidth 寬度, nheight 高度

void movewindow(lpcrect lprect, bool brepaint = true);

一般使用類成員函式,在初始化函式中使用,移動控制項位置,調整控制項尺寸。

movewindow移動控制項位置是相對于父視窗的客戶區左上角。(反正是以上乙個視窗為參照移動,具體要看情況)

void cmfc_movewindowdlg::onbnclickedbtn2()

執行效果如下:

二、setwindowpos(與movewindow用法相似,也是相對于父視窗或者螢幕移動)

1.api函式:bool setwindowpos( hwnd hwnd, hwnd hwndinsertafter, int x, int y, int cx, int cy, uint uflags);

hwnd 視窗控制代碼

hwndinsertafter 對話方塊在z軸上的顯示順序

#define hwnd_top        ((hwnd)0)

#define hwnd_bottom     ((hwnd)1)

#define hwnd_topmost    ((hwnd)-1)

#define hwnd_notopmost  ((hwnd)-2)

nflags 視窗尺寸和定位的標誌

2.cwnd類成員函式:bool setwindowpos(const cwnd* pwndinsertafter, int x, int y, int cx, int cy, uint nflags);

pwndinsertafter 對話方塊在z軸上的顯示順序(指標型別)

static afx_data const cwnd wndtop;

static afx_data const cwnd wndbottom;

static afx_data const cwnd wndtopmost;

static afx_data const cwnd wndnotopmost;

x 左上角x座標,y 左上角y座標, cx 控制項寬度, cy 控制項高度

nflags 視窗尺寸和定位的標誌

#define swp_nosize          0x0001    不改變尺寸(忽略cx,cy)

#define swp_nomove          0x0002    不移動視窗位置(忽略x,y)

#define swp_nozorder        0x0004    維持當前z序(忽略hwndlnsertafter引數)

#define swp_noredraw        0x0008    

#define swp_noactivate      0x0010

#define swp_framechanged    0x0020  /* the frame changed: send wm_nccalcsize */

#define swp_showwindow      0x0040    顯示視窗

#define swp_hidewindow      0x0080    隱藏視窗

#define swp_nocopybits      0x0100

#define swp_noownerzorder   0x0200  /* don't do owner z ordering */

#define swp_nosendchanging  0x0400  /* don't send wm_windowposchanging */

#define swp_drawframe       swp_framechanged

#define swp_noreposition    swp_noownerzorder

#define swp_defererase      0x2000

#define swp_asyncwindowpos  0x4000

bool cmfc_cbuttondlg::oninitdialog()

MoveWindow位置不對的問題

由於以前設計到介面的設計非常少,但現在的工作涉及到這個,所以記下來,怕以後還遇到類似的問題。在調整介面的時候,需要移動乙個按鈕,但是只要一移動,問題來了,在對話方塊上,死活顯示不出來,原始 如下 m but.getwindowrect rc m but.movewindow rc 後來記起來了,有個...

MoveWindow改變指定視窗的位置和大小

movewindow vb宣告 declare function movewindow lib user32 alias movewindow byval hwnd as long,byval x as long,byval y as long,byval nwidth as long,byval ...

MOVEWINDOW改變指定視窗的位置和大小

vb宣告 declare function movewindow lib user32 alias movewindow byval hwnd as long,byval x as long,byval y as long,byval nwidth as long,byval nheight as ...