當你建立了一個基本對話方塊應用程式時,設定對話方塊置頂,可以在初始化對話方塊函數或者在訊息響應函數裡添加以下語句設定置頂:
SetWindowPos(&wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);取消置頂:SetWindowPos(&wndNoTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);不需做任何修改即可完成。當建立的是單文檔應用程式時,要在前面多一個視窗控制代碼函數。下面是更詳細的說明:函數名: SetWindowPos
標頭檔: winuser.h
函數原型:
BOOL SetWindowPos
(
HWND hWnd, //視窗控制代碼
HWND hWndInsertAfter, //排列順序的控制代碼
int X, //水平座標
int Y, //垂直座標
int cx, //寬
int cy, //高
UINT uFlags //視窗定位標識
);
說明:
這個函數能改變視窗的大小、位置和設定子視窗、快顯視窗或頂層視窗的排列順序。
傳回值:
BOOL,如果傳回值非零表示成功,返回零表示失敗。錯誤資訊請參看GetLastError函數。
參數表:
參數 類型及說明
hwnd HWND,欲定位的視窗控制代碼
hWndInsertAfter HWND,置於hwnd前面的視窗控制代碼。這個參數必須是視窗的控制代碼或是下面的值之一: HWND_BOTTOM 將視窗置於其它所有視窗的底部
HWND_NOTOPMOST 將視窗置於其它所有視窗的頂部,並位於任何最頂部視窗的後面。如果這個視窗非頂部視窗,這個標記對該視窗並不產生影響
HWND_TOP 將視窗置於它所有視窗的頂部
HWND_TOPMOST 將視窗置於其它所有視窗的頂部,並位於任何最頂部視窗的前面。即使這個視窗不是使用中視窗,也維持最頂部狀態
wFlags:
UINT,指定視窗狀態和位置的標記。這個參數使用下面值的組合: SWP_DRAWFRAME 圍繞視窗畫一個框
SWP_FRAMECHANGED 發送一條WM_NCCALCSIZE訊息進入視窗,即使視窗的大小沒有發生改變。如果不指定這個參數,訊息WM_NCCALCSIZE只有在視窗大小發生改變時才發送
SWP_HIDEWINDOW 隱藏視窗
SWP_NOACTIVATE 不啟用視窗
SWP_NOCOPYBITS 屏蔽用戶端區域
SWP_NOMOVE 保持當前位置(X和Y參數將被忽略)
SWP_NOOWNERZORDER 不改變所有視窗的位置和排列順序
SWP_NOREDRAW 視窗不自動重畫
SWP_NOREPOSITION 與SWP_NOOWNERZORDER標記相同
SWP_NOSENDCHANGING 防止這個視窗接受WM_WINDOWPOSCHANGING訊息
SWP_NOSIZE 保持當前大小(cx和cy會被忽略)
SWP_NOZORDER 保持視窗在列表的當前位置(hWndInsertAfter將被忽略)
SWP_SHOWWINDOW 顯示視窗
相關函數:
MoveWindow,SetActiveWindow,SetForegroundWindow
例子:
//設定頂層視窗
SetWindowPos( Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE||SWP_NOSIZE);
//取消頂層視窗
SetWindowPos( Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE||SWP_NOSIZE);