什么是“總在上面”呢?就是這個窗口總是停留在其他窗口的上面。那么,這個TopMost窗口怎樣設計呢?請看下面的“招兒”:
這個“總在上面”的窗口的實現需要用到一個API函數——SetWindowPos。這個函數的格式如下:
Function SetWindowPos Lib ″user32″(ByVal hWnd As Long,ByVal hWndInsertAfter As
Long,ByVal x As Long,ByVal y As Long ,ByVal cx As Long,ByVal cy As Long,ByVal wFlags As
Long)As Long
函數的參數意義如下:
hWnd——所處理窗口的句柄。
hWndInsertAfter——窗口的句柄,它將在Z軸順序上先于該窗口。這個變量可以賦以下值中的一種,從而成為窗口的句柄:HWND—BOTTOM(=1,將窗口放置在Z軸順序的底端)、HWND——TOP(=0,將窗口放置在Z軸順序的頂端)、HWND—TOPMOST(=-1,將窗口放置在所有非首頁窗口的上面)或者HWND—NOTOPMOST(=2,對在所有非首頁窗口的頂端窗口重新定位)。
x——規定窗口左邊的新位置。
y——規定窗口上邊的新位置。
cx——規定窗口的新寬度。
cy——規定窗口的新高度。
wFlags——規定大小和定位選擇,如表所示。
接下來我們該看一個例子。
先設置一個200×200像素的窗口,然后聲名API函數SetWindowPos:
Declare Function SetWindowPos Lib ″user32″ Alias ″SetWindowPos″ (ByVal hwnd
As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As
Long, ByVal cy As Long, ByVal wFlags As Long) As Long
并定義各個常量的值,如下:
const SWP—SHOWWINDOW=&H40
const SWP—DRAWFRAME=&H20
const HWND—TOPMOST=-1
然后,在Form—Load子程序中填寫如下代碼就可以使其成為首頁了:
Sub Form—Load()
retval=SetWindowPos(Form1.hwnd, HWND—TOPMOST, 100, 100, 100, 100, SWP—DRAWFRAME
Or SWP—SHOWWINDOW)
End Sub
到此為止,我們已經完成了這個TopMost的所有工作,它現在已經可以保持在其他窗口之上了。試試看?