SetWindowPos //設置窗口顯示z次序位置 //函數原型: WINUSERAPI BOOL WINAPI SetWindowPos( HWND hWnd, //窗口句柄 HWND hWndInsertAfter,//窗口顯示位置,見下表 int X, //x坐標 int Y, //y坐標 int cx, //寬度 int cy, //高度 UINT uFlags //窗口尺寸和定位的標志,見下表 ); //參數表1:hWndInsertAfter 有下列值 1。HWND_BOTTOM: //值為1, 將窗口置於Z序的底部。 2。HWND_NOTOPMOST: //值為-2,將窗口置於所有非頂層窗口之上(即在所有頂層窗口之后)。 3。HWND_TOP: //值為0, 將窗口置於Z序的頂部。 4。HWND_TOPMOST: //值為-1,將窗口置於所有非頂層窗口之上。即使窗口未被激活窗口也將保持頂級位置。 //參數表2: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: //顯示窗口 返回值: 成功返回非0,失敗返回0,獲取錯誤用GetLastError(); win32 實例: HWND hToolBar = GetDlgItem(m_hWnd, IDC_TOOLBAR1); //獲取工具欄句柄 if (SendMessage(hToolBar, TB_GETSTATE, ID_BTN_TOP, 0)&TBSTATE_CHECKED)//獲取工具欄按鈕的狀態 SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);//窗口置頂 else SetWindowPos(m_hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);//取消置頂 break; MFC 原型 BOOL SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy,UINT nFlags); 示例: int cx = GetSystemMetrics(SM_CXSCREEN); int cy = GetSystemMetrics(SM_CYSCREEN); int dx = 600; int dy = 400; SetWindowPos(&wndBottom,cx-dx,cy-dy,dx,dy,SWP_NOACTIVATE); //設置廣告窗口浮動於右下角 c# 用法 [DllImport("user32.dll", EntryPoint = "SetWindowPos")] static extern bool SetWindowPos( IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags ); static readonly IntPtr HWND_TOPMOST = new IntPtr(-1); static readonly IntPtr HWND_NOTOPMOST = new IntPtr(-2); static readonly IntPtr HWND_TOP = new IntPtr(0); const UInt32 SWP_NOSIZE = 0x0001; const UInt32 SWP_NOMOVE = 0x0002; const UInt32 SWP_NOZORDER = 0x0004; const UInt32 SWP_NOREDRAW = 0x0008; const UInt32 SWP_NOACTIVATE = 0x0010; const UInt32 SWP_FRAMECHANGED = 0x0020; const UInt32 SWP_SHOWWINDOW = 0x0040; const UInt32 SWP_HIDEWINDOW = 0x0080; const UInt32 SWP_NOCOPYBITS = 0x0100; const UInt32 SWP_NOOWNERZORDER = 0x0200; const UInt32 SWP_NOSENDCHANGING = 0x0400; const UInt32 TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE;