WM_WINDOWPOSCHANGED消息中0x10000000标志代表什么?
关于WM_WINDOWPOSCHANGED与WINDOWPOS未公开标志的问题
Windows官方API文档和头文件并未涵盖WM_WINDOWPOSCHANGED消息及WINDOWPOS结构的所有可能标志,目前整理到的标志如下:
// WINDOWPOS 官方文档已定义的标志 SWP_NOSIZE 0x0001 // 不改变窗口大小 SWP_NOMOVE 0x0002 // 不改变窗口位置 SWP_NOZORDER 0x0004 // 不改变窗口Z序 SWP_NOREDRAW 0x0008 // 不重绘窗口 SWP_NOACTIVATE 0x0010 // 不激活窗口 SWP_FRAMECHANGED 0x0020 = SWP_DRAWFRAME /* 窗口边框已更改:发送WM_NCCALCSIZE消息 */ SWP_SHOWWINDOW 0x0040 // 显示窗口 SWP_HIDEWINDOW 0x0080 // 隐藏窗口 SWP_NOCOPYBITS 0x0100 // 不复制窗口内容 SWP_NOOWNERZORDER 0x0200 = SWP_NOREPOSITION /* 不调整所有者窗口的Z序 */ SWP_NOSENDCHANGING 0x0400 /* 不发送WM_WINDOWPOSCHANGING消息 */ // 来自其他非官方来源的标志 SWP_NOCLIENTSIZE 0x0800 // Winehq 源码:不改变客户区大小 SWP_NOCLIENTMOVE 0x1000 // Winehq 源码:不改变客户区位置 SWP_DEFERERASE 0x2000 // SetWindowPos函数文档:推迟擦除操作 SWP_ASYNCWINDOWPOS 0x4000 // SetWindowPos函数文档:异步执行窗口位置变更 SWP_STATECHANGED 0x8000 // Winehq 源码:窗口状态已更改 // 未知未公开标志 ???????????????? 0x10000000
我的程序启动时收到的标志值为268441667(即0x10001843),拆解后如下:
0x10001843 0x0001 SWP_NOSIZE // 不改变窗口大小 0x0002 SWP_NOMOVE // 不改变窗口位置 0x0040 SWP_SHOWWINDOW // 显示窗口 0x0800 SWP_NOCLIENTSIZE /* 客户区未调整大小 */ /* 内部标志 */ 0x1000 SWP_NOCLIENTMOVE /* 客户区未移动位置 */ /* 内部标志 */ 0x10000000 (未公开,含义未知)
由于不清楚0x10000000这个未公开标志的具体含义,因此无法在程序中依赖该标志的行为。
内容的提问来源于stack exchange,提问作者Ryuushi
相关产品推荐
相关产品推荐

