movewindow(MoveWindow函数用法[通俗易懂])

发布时间:2025-12-10 19:20:26 浏览次数:7

MoveWindow函数用法[通俗易懂]-MoveWindow改变大小失败

MoveWindow函数用法[通俗易懂]win32API函数:BOOLMoveWindow(_In_HWNDhWnd,_In_intX,_In_intY,_In_intnWidth,_In_intnHeight,_In_BOOLbRepaint);CWnd类成员函数:voidMoveWindow(intx,inty,intnWi…

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

是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!

为防止网络爬虫,请关注公众号回复”口令”

激活idea 激活CLion DataGrip DataSpell dotCover dotMemory dotTrace GoLand PhpStorm PyCharm ReSharper ReShaC++ Rider RubyMine WebStorm 全家桶 刷新

【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…

一般使用类成员函数,在初始化函数中使用,移动控件位置,调整控件尺寸。

BOOL CMFC_MoveWindowDlg::OnInitDialog(){CDialogEx::OnInitDialog();// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);// 设置大图标SetIcon(m_hIcon, FALSE);// 设置小图标// TODO: 在此添加额外的初始化代码//::MoveWindow(GetSafeHwnd(), 0, 0, 600, 550, TRUE);    //相对于屏幕左上角移动this->MoveWindow(0, 0, 600, 550);//这里并没有将对话框移动到屏幕左上角?可以设置窗口的属性!    //但是不写在此函数中会生效return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE}void CMFC_MoveWindowDlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码//CDialogEx::OnOK();this->MoveWindow(0, 0, 600, 550);//这里生效了}

ps:

False为居中,改为True,对话框移动到屏幕左上角。

MoveWindow移动控件位置是相对于父窗口的客户区左上角。(反正是以上一个窗口为参照移动,具体要看情况)

void CMFC_MoveWindowDlg::OnBnClickedBtn2(){// TODO: 在此添加控件通知处理程序代码GetDlgItem(IDOK)->MoveWindow(0, 0, 100, 80);}

运行效果如下:

二、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(){CDialogEx::OnInitDialog();// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);// 设置大图标SetIcon(m_hIcon, FALSE);// 设置小图标// TODO: 在此添加额外的初始化代码//::SetWindowPos(GetSafeHwnd(), HWND_TOPMOST, 0, 0, -1, -1, SWP_NOSIZE);//没有移动到窗口左上角this->SetWindowPos(&wndTop, 0, 0, 700, 650, SWP_SHOWWINDOW);//移动到窗口左上角,并改变尺寸return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE}
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477