持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情
介绍
对界面的操作是常有之事,有时会对界面进行操作最小化置顶等等,SetWindowPos 函数就是最常用,并且设计范围比较广的函数。它不仅能改变窗口的大小位置,还能设置子窗口,弹出窗口或者顶层窗口的排列顺序。返回 0 表示失败,非零为成功,错误信息可以用GetLastError函数查看。**
最基础的两种使用方式:
不置顶
::*SetWindowPos*((*HWND*)this->winId(), *HWND_NOTOPMOST*, 0, 0, 0, 0, *SWP_NOMOVE* | *SWP_NOSIZE*);
置顶
::*SetWindowPos*((*HWND*)this->winId(), *HWND_TOPMOST*, 0, 0, 0, 0, *SWP_NOMOVE* | *SWP_NOSIZE*);
函数原型以及对每个参数的解释:
BOOL SetWindowPos(
HWND hWnd, //窗口句柄
HWND hWndInsertAfter, //排列顺序的句柄
int X, //水平坐标
int Y, //垂直坐标
int cx, //宽
int cy, //高
UINT uFlags //窗口定位标识);
hWnd 它用于定位窗口的句柄
hWndInsertAfter 他是用于表示上一个窗口的句柄,但是这个参数有固定值(置顶与不置顶因为是主要通过这个参数来改变的)也可以以Z次序排序的窗口中位于当前窗口前面的那个窗口(下面的几个选项是以Z次序排序的部分)。
HWND_BOTTOM:设置窗口为底层窗口
HWND_TOP:设置窗口为顶层窗口 就像常用的置顶按钮
HWND_NOTOPMOST:将窗口设置为最顶层窗口的下一层
HWND_TOPMOST:将窗口设置为最顶层窗口,就算不适用他他还是在最顶层的位置。
X y cx cy 他的作用就是确定位置以及大小,和控件中的setGeometry函数具有同样的作用。
uFlags 这个参数主要设计位置 他可以设置某个参数不起作用
参数介绍:
SWP_HIDEWINDOW:隐藏窗口
SWP_NOACTIVATE:不激活窗口
SWP_SHOWWINDOW:显示窗口
SWP_NOMOVE:这个参数代表原来的窗口位置不改变,x和y这两个参数不起作用。
SWP_NOSIZE:这个参数代表原来的窗口宽度和高度不改变, cx和cy这两个参数不起作用。
如果原位置以及大小不需要改变时,可以将这两个参数同时存在。