Windows API SetWindowPos

来源:互联网 发布:杜甫草堂附近美食知乎 编辑:程序博客网 时间:2024/06/10 02:04


函数原型:BOOL SetWindowPos(HWN hWnd,HWND hWndlnsertAfter,int X,int Y,int cx,int cy,UNIT.Flags);

用到SetWindowPos的时候,windows API解释还不够详细,主要是hWndlnsertAfter和Flags 的值没详细介绍,此处做个记录:

hWndInsertAfter在z序中的位于被置位的窗口前的窗口句柄。该参数必须为一个窗口句柄,或下列值之一:
//hWndInsertAfter 参数可选值:
HWND_TOP       = 0;        {在前面}
HWND_BOTTOM    = 1;        {在后面}
HWND_TOPMOST   = HWND(-1); {在前面, 位于任何顶部窗口的前面}
HWND_NOTOPMOST = HWND(-2); {在前面, 位于其他顶部窗口的后面}

 

uFlags:窗口尺寸和定位的标志。该参数可以是下列值的组合:
SWP_NOSIZE=1 <0x1>;    {忽略 cx、cy, 保持大小}
SWP_NOMOVE=2 <0x2>;    {忽略 X、Y, 不改变位置}
SWP_NOZORDER=4 <0x4>;    {忽略 hWndInsertAfter, 保持 Z 顺序}
SWP_NOREDRAW=8 <0x8>;    {不重绘}
SWP_NOACTIVATE=16 <0x10>; {不激活}
SWP_FRAMECHANGED=32 <0x20>; {强制发送 WM_NCCALCSIZE 消息, 一般只是在改变大小时才发送此消息}
SWP_SHOWWINDOW=64 <0x40>; {显示窗口}
SWP_HIDEWINDOW=128 <0x80>; {隐藏窗口}
SWP_NOCOPYBITS=256 <0x100>; {丢弃客户区}
SWP_NOOWNERZORDER=512 <0x200>; {忽略 hWndInsertAfter, 不改变 Z 序列的所有者}
SWP_NOSENDCHANGING=1024 <0x400>; {不发出 WM_WINDOWPOSCHANGING 消息}
SWP_DRAWFRAME      = SWP_FRAMECHANGED; {画边框}
SWP_NOREPOSITION   = SWP_NOOWNERZORDER;{}
SWP_DEFERERASE=8192 <0x2000>;            {防止产生 WM_SYNCPAINT 消息}
SWP_ASYNCWINDOWPOS=16384 <0x4000>;            {若调用进程不拥有窗口, 系统会向拥有窗口的线程发出需求}

 

C#枚举

[Flags]    public enum WindowFlag : int    {        NOSIZE = 1,        NOMOVE = 2,        NOZORDER = 4,        NOREDRAW = 8,        NOACTIVATE = 16,        FRAMECHANGED = 32,        SHOWWINDOW = 64,        HIDEWINDOW = 128,        NOCOPYBITS = 256,        NOOWNERZORDER = 512,        NOSENDCHANGING = 1024,        DRAWFRAME = 32,        NOREPOSITION = 512,        DEFERERASE = 8192,        ASYNCWINDOWPOS = 16384    }

原创粉丝点击