Win32 SetWindowPos 函数详解

举报
福州司马懿 发表于 2022/11/21 14:21:59 2022/11/21
【摘要】 函数作用SetWindowPos 主要用来设置窗口位置及其在Z轴的序列 函数原型WINUSERAPI BOOL WINAPI SetWindowPos( HWND hWnd, //窗口句柄 HWND hWndInsertAfter,//窗口显示位置,见下表 int X, //x坐标 int Y, ...

函数作用

SetWindowPos 主要用来设置窗口位置及其在Z轴的序列

函数原型

WINUSERAPI BOOL WINAPI SetWindowPos(
    HWND    hWnd,      //窗口句柄
    HWND    hWndInsertAfter,//窗口显示位置,见下表
    int     X,         //x坐标
    int     Y,         //y坐标
    int     cx,        //宽度
    int     cy,        //高度
    UINT    uFlags     //窗口尺寸和定位的标志,见下表
);

参数含义

hWndInsertAfter

用来设置当前窗口,相对于屏幕上其它窗口在Z轴的位置

hWndInsertAfter 含义
HWND_BOTTOM 将窗口置于Z序的底部
HWND_NOTOPMOST 将窗口置于所有非顶层窗口之上(即在所有顶层窗口之后)
HWND_TOP 将窗口置于Z序的顶部
HWND_TOPMOST 将窗口置于所有非顶层窗口之上。即使窗口未被激活窗口也将保持顶级位置

uFlags

用来确定窗口的状态和定位,下面的值可以用或来连接

uFlags 含义
SWP_ASYNCWINDOWPOS 如果调用进程不拥有窗口,系统会向拥有窗口的线程发出需求
SWP_DEFERERASE 防止产生WM_SYSNCPAINT消息
SWP_DRAWFRAME 在窗口周围画个边框(定义在窗口类中描述)
SWP_FRAMECHANGED 给窗口发送WM_NCCALCSIZE消息,即使窗口尺寸没改变也发送
SWP_HIDEWINDOW 隐藏窗口
SWP_NOACTIVATE 不激活窗口
SWP_NOCOPYBITS 清除客户区的所有内容
SWP_NOMOVE 不改变当前位置,忽略X和Y的值
SWP_NOOWNERZORDER 不改变Z序中的位置
SWP_NOREDRAW 不重绘改变的内容
SWP_NOREPOSITION 与SWP_NOOWNERZORDER相同
SWP_NOSENDCHANGING 防止窗口接收WM_WINDOWPOSCHANGING消息
SWP_NOSIZE 维持当前大小(忽略cx和cy的值)
SWP_NOZORDER 维持当前Z序
SWP_SHOWWINDOW 显示窗口
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。