一、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 ...