人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

用VB制作TopMost分類窗口

用VB制作TopMost分類窗口

更新時間:2022-08-27 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

TopMost這個詞也許你很陌生,但具有TopMost窗口的軟件你應(yīng)該早就接觸過,如Office97、網(wǎng)絡(luò)吸血鬼、IE等。所謂TopMost窗口是指哪些始終出現(xiàn)在桌面的最前方且不會被其它窗口覆蓋的窗口,如網(wǎng)絡(luò)吸血鬼中的下載圖標(biāo)。
  一般憎況下,在運(yùn)行VB程序時,窗口總有可能會被其它程序的窗口所覆蓋。如何在自己的應(yīng)用程序中實(shí)現(xiàn)TopMost類型的窗口呢?我們可以通過調(diào)用Windows API函數(shù)SetWindowPos來實(shí)現(xiàn)。
  一、SetWindowPos函數(shù)介紹
  SetWindowPos函數(shù)功能是將一個窗口在三維空間中移動,利用它,你可以改變一個窗口的位置,甚至可以在Z軸上改變(Z軸決定了一個窗口和其它窗口的前后關(guān)系),你還可以改變窗口的尺寸。為了實(shí)現(xiàn)TopMost類型的窗口,我們只需調(diào)用該函數(shù),將窗口放在所有窗口的前面并永遠(yuǎn)保持在最前面即可。要想在VB中使用SetWindowPos函數(shù),必須在程序的代碼模塊中進(jìn)行如下的函數(shù)聲明:
  Declare Function SetwindowPos Lib "user32.dll" (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
  SetWindowPos函數(shù)各個參數(shù)的含義見表1。
表1 SetWindowPos函數(shù)的參數(shù)解釋

參數(shù)名 參數(shù)含義
hwnd 要移動的窗口的句柄(可以用窗體的hwnd屬性)
hWndInsertAfter 關(guān)于如何在Z軸上放置窗口的標(biāo)記(具體見表2)
x 相當(dāng)于窗口的Left屬性
y 相當(dāng)于窗口的Top屬性
cx 相當(dāng)于窗口的Right屬性
cy 相當(dāng)于窗口的Bottom屬性
wFlags 關(guān)于如何移動窗口的標(biāo)記(具體見表3)

表2 HWndInsertAfter參數(shù)的可能取值及含義

hWndInsertAfter的可能取值 功能
某一窗口的句柄 將窗口放在該句柄指定的窗口后面
HWND_BOTTOM(1) 把窗口放在Z軸的最后,即所有窗口的后面
HWND_TOP(0) 將窗口放在Z軸的前面,即所有窗口的前面
HWND_TOPMOST(-1) 使窗口成為“TopMost”類型的窗口,這種類型
的窗口總是在其它窗口的前面,真到它被關(guān)閉
HWND_NOTOPMOST(-2) 將窗口放在所有“TopMost”類型
窗口的后面、其它類型窗口的前面

表3 wFlags參數(shù)的可能值及含義

wFlags參數(shù)的可能值 功能
SWP_DRAWFRAME(&H20) 移動窗口后重畫窗口及其上的所有內(nèi)容
SWP_HIDEWINDOW(&H80) 隱藏窗口,窗口隱藏后既不出現(xiàn)在屏幕上也不出現(xiàn)在任
務(wù)欄上,但它仍然處于激活狀態(tài)
SWP_NOACTIVATE(&H10) 窗口移動后不激活窗口,當(dāng)然,如果窗口在移動前就是
激活的則例外
SWP_NOCOPYBITS(&H100) 當(dāng)窗口移動后,不重畫它上面的任何內(nèi)容
SWP_NOMOVE(&H2) 不移動窗口(即忽略X和Y參數(shù))
SWP_NOSIZE(&H1) 不改變窗口尺寸(即忽略Cx和Cy參數(shù))
SWP_NOREDRAW(&H8) Do not remove the image of the window in its former position
from the screen. In other words,leave behind a ghost image
of the window in its old position
SWP_NOZORDER(&H4) 不改變窗口聽Z軸位置(即忽略hWndInsertAfter參數(shù))
SWP_SHOWWINDOW(&H40) 顯示窗口(之前必須使用過SWP_HIDEWINDOW
隱藏窗口)

   前面已提到,利用SetWindowPos函數(shù)可以決定窗口在Z軸中的位置,具體如何放置,需根據(jù)表2給hWndInsertAfter參數(shù)賦予合適的值。
   另外,wFlags參數(shù)為SetWindowPos函數(shù)移動窗口提供了附加的特性,我們可以通過or運(yùn)算將表3中若干個wFlags結(jié)合在一起使用,如SWP_NOMOVE Or SWP_NOSIZE既不移動窗口又不改變窗口的尺寸。但是要注意不要將功能沖突的值結(jié)合使用,如SWP_HIDEWINDOW Or SWP_SHOWWINDOW。
二、程序舉例
   下面,我們以一個簡單的例子說明SetWindowPos函數(shù)的用法及如何實(shí)現(xiàn)TopMost類型窗口。新建工程,在普通窗體Form1上放置兩個命令按鈕cmdNormal和cmdTopMost,命令按鈕的Caption屬性分別為“變成普通窗口”和“變成TopMost窗口”。cmdNormal的Enabled屬性為False。為工程添加代碼模塊Moudall,在其中放置如下聲明代碼:
Declare 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
Public Const SWP_NOMOVE= &H2 '不移動窗體
Public Const SWP_NOSIZE=&H1 '不改變窗體尺寸
Public Const Flag=SWP_NOMOVE Or SWP_NOSIZE
Public Const HWND_TOPMOST=-1 '窗體總在最前面
Public Const HWND_NOTOPMOST=-2 '窗體不在最前面
為窗體添加代碼如下:
Private Sub cmdNormal_Click()
   cmdTopMost.Enabled=True
   cmdNormal. Enabled= False
   Form1.Captio = "現(xiàn)在是普通窗口"
   SetWindowPos Form1.hwnd,HWND_NOTOPMOST,0,0,0,0,Flag
End Sub
Private Sub cmdTopMost_Click()
   cmdTopMost.Enabled = False
   cmdNormal.Enabled = True
   Form1.Caption = "現(xiàn)在是TopMost窗口"
   SetWindowPos Form1.hwnd,HWND_TOPMOST,0,0,0,0,Flag
End Sub
   按下F5,運(yùn)行程序,單擊“變成TopMost窗體”命令按鈕,此時窗口即成為TopMost類型。隨意打開桌面上的其它窗口,F(xiàn)orm1總是處在其它窗口的前面;如果單擊“變成普通窗體”按鈕。則一切又恢復(fù)正常,一旦打開了其它窗口,則其它窗口會將Form1窗口覆蓋。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 珠海市| 高唐县| 山西省| 湖口县| 大理市| 班戈县| 锡林浩特市| 平和县| 民县| 扎赉特旗| 林口县| 扎鲁特旗| 安国市| 吉隆县| 新宁县| 沙坪坝区| 林口县| 桑植县| 翁牛特旗| 上虞市| 平利县| 疏附县| 霞浦县| 东方市| 塘沽区| 泰州市| 莲花县| 广德县| 峡江县| 高邮市| 镇原县| 沙田区| 乌拉特前旗| 武陟县| 峡江县| 阜新| 乌兰县| 岳阳市| 秦皇岛市| 周口市| 新乡市|