Windows API SetWindowPos


函数原型: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
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值