国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

用VB制作TopMost類型窗口

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

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

-align="middle"width="214">hWndInsertAfter的可能取值->-align="middle"width="302">功能->-align="middle"width="214">某一窗口的句柄->-align="middle"width="302">將窗口放在該句柄指定的窗口后面->-align="middle"width="214">HWND_BOTTOM(1)->-align="middle"width="302">把窗口放在Z軸的最后,即所有窗口的后面->-align="middle"width="214">HWND_TOP(0)->-align="middle"width="302">將窗口放在Z軸的前面,即所有窗口的前面->-align="middle"width="214">HWND_TOPMOST(-1)->-align="middle"width="302">使窗口成為“TopMost”類型的窗口,這種類型
的窗口總是在其它窗口的前面,真到它被關(guān)閉->-align="middle"width="214">HWND_NOTOPMOST(-2)->-align="middle"width="302">將窗口放在所有“TopMost”類型
窗口的后面、其它類型窗口的前面->
表3wFlags參數(shù)的可能值及含義

-align="middle"width="218">wFlags參數(shù)的可能值->-align="middle"width="298">功能->-align="middle"width="218">SWP_DRAWFRAME(&H20)->-align="middle"width="298">移動窗口后重畫窗口及其上的所有內(nèi)容->-align="middle"width="218">SWP_HIDEWINDOW(&H80)->-align="middle"width="298">隱藏窗口,窗口隱藏后既不出現(xiàn)在屏幕上也不出現(xiàn)在任
務(wù)欄上,但它仍然處于激活狀態(tài)->-align="middle"width="218">SWP_NOACTIVATE(&H10)->-align="middle"width="298">窗口移動后不激活窗口,當(dāng)然,如果窗口在移動前就是
激活的則例外->-align="middle"width="218">SWP_NOCOPYBITS(&H100)->-align="middle"width="298">當(dāng)窗口移動后,不重畫它上面的任何內(nèi)容->-align="middle"width="218">SWP_NOMOVE(&H2)->-align="middle"width="298">不移動窗口(即忽略X和Y參數(shù))->-align="middle"width="218">SWP_NOSIZE(&H1)->-align="middle"width="298">不改變窗口尺寸(即忽略Cx和Cy參數(shù))->-align="middle"width="218">SWP_NOREDRAW(&H8)->-align="middle"width="298">Donotremovetheimageofthewindowinitsformerposition
fromthescreen.InotherWords,leavebehindaGhostimage
ofthewindowinitsoldposition->-align="middle"width="218">SWP_NOZORDER(&H4)->-align="middle"width="298">不改變窗口聽Z軸位置(即忽略hWndInsertAfter參數(shù))->-align="middle"width="218">SWP_SHOWWINDOW(&H40)->-align="middle"width="298">顯示窗口(之前必須使用過SWP_HIDEWINDOW
隱藏窗口)->

前面已提到,利用SetWindowPos函數(shù)可以決定窗口在Z軸中的位置,具體如何放置,需根據(jù)表2給hWndInsertAfter參數(shù)賦予合適的值。
另外,wFlags參數(shù)為SetWindowPos函數(shù)移動窗口提供了附加的特性,我們可以通過or運(yùn)算將表3中若干個(gè)wFlags結(jié)合在一起使用,如SWP_NOMOVEOrSWP_NOSIZE既不移動窗口又不改變窗口的尺寸。但是要注意不要將功能沖突的值結(jié)合使用,如SWP_HIDEWINDOWOrSWP_SHOWWINDOW。
二、程序舉例
下面,我們以一個(gè)簡單的例子說明SetWindowPos函數(shù)的用法及如何實(shí)現(xiàn)TopMost類型窗口。新建工程,在普通窗體Form1上放置兩個(gè)命令按鈕cmdNormal和cmdTopMost,命令按鈕的Caption屬性分別為“變成普通窗口”和“變成TopMost窗口”。cmdNormal的Enabled屬性為False。為工程添加代碼模塊Moudall,在其中放置如下聲明代碼:
DeclareFunctionSetWindowPosLib"user32"(ByValhwndAsLong,ByValhWndInsertAfterAsLong,ByValxAsLong,ByValyAsLong,ByValcxAsLong,ByValcyAsLong,ByValwFlagsAsLong)AsLong
PublicConstSWP_NOMOVE=&H2'不移動窗體
PublicConstSWP_NOSIZE=&H1'不改變窗體尺寸
PublicConstFlag=SWP_NOMOVEOrSWP_NOSIZE
PublicConstHWND_TOPMOST=-1'窗體總在最前面
PublicConstHWND_NOTOPMOST=-2'窗體不在最前面
為窗體添加代碼如下:
PRivateSubcmdNormal_Click()
cmdTopMost.Enabled=True
cmdNormal.Enabled=False
Form1.Captio="現(xiàn)在是普通窗口"
SetWindowPosForm1.hwnd,HWND_NOTOPMOST,0,0,0,0,Flag
EndSub
PrivateSubcmdTopMost_Click()
cmdTopMost.Enabled=False
cmdNormal.Enabled=True
Form1.Caption="現(xiàn)在是TopMost窗口"
SetWindowPosForm1.hwnd,HWND_TOPMOST,0,0,0,0,Flag
EndSub
按下F5,運(yùn)行程序,單擊“變成TopMost窗體”命令按鈕,此時(shí)窗口即成為TopMost類型。隨意打開桌面上的其它窗口,F(xiàn)orm1總是處在其它窗口的前面;如果單擊“變成普通窗體”按鈕。則一切又恢復(fù)正常,一旦打開了其它窗口,則其它窗口會將Form1窗口覆蓋。
本程序用VisualBasic5.0編寫,在Pwin95、Pwin97環(huán)境下運(yùn)行正常。->


上一篇:如何用VB建立快捷方式

下一篇:VB實(shí)現(xiàn)按鈕浮動效果

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片
猜你喜歡的新聞
猜你喜歡的關(guān)注

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 嘉兴市| 北辰区| 四川省| 无棣县| 南澳县| 河北省| 苏尼特左旗| 白玉县| 甘洛县| 江都市| 康平县| 信丰县| 贺州市| 独山县| 嘉善县| 阿鲁科尔沁旗| 清河县| 吉隆县| 麟游县| 灵宝市| 四子王旗| 深水埗区| 佛坪县| 札达县| 深州市| 张家川| 阜新市| 肥乡县| 梁山县| 达州市| 永登县| 吴川市| 洞口县| 仪征市| 达尔| 大冶市| 冷水江市| 陇南市| 娱乐| 金平| 丰原市|