vb中什麼設定主視窗讓其它窗在主視窗前面

2022-02-22 02:44:51 字數 3630 閱讀 6813

1樓:匿名使用者

使用api函式之前必須先在程式中宣告如下:

private 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

其中各引數的意義如下:

引數 意義

hwnd long 欲定位的視窗

hwndinsertafter long 視窗控制代碼。在視窗列表中,視窗hwnd會置於這個視窗控制代碼的後面

x,y long 視窗新的x,y座標

cx,cy long 指定新的視窗寬度和高度

wflags long 包含了旗標的一個整數,是下列之一

返回值 long 非零表示成功,零表示失敗

下面是部分wflags引數和它們的意義:

引數 意義和使用方法

swp_drawframe 圍繞視窗畫一個框

swp_hidewindow 隱藏視窗

swp_noactivate 不啟用視窗

swp_nomove 保持當前位置 (x和y設定將被忽略) &h2

swp_noredraw 視窗不自動重畫

swp_nosize 保持當前大小 (cx和cy會被忽略) &h1

swp_nozorder 保持視窗在列表的當前位置 (hwndinsertafter將被忽略)

swp_showwindow 顯示視窗 &h40

swp_framechanged 強迫一條wm_nccalcsize訊息進入視窗,即使視窗的大小沒有改變

函式的使用很簡單,我們只須在form_load中加入如下語句即可:

retvalue = setwindowpos(me.hwnd, hwnd_topmost, me.currentx, me.

currenty, 300, 300, swp_showwindow)

這樣窗體就能保持在所有窗體的前面了。

為了學習方便,下面提供了原始碼:

註釋:-------------------------------------------

註釋: 讓一個窗體總是處於最前的例子

註釋:-------------------------------------------

註釋:程式說明:

註釋:本例應用setwindowpos函式,設定窗體的顯示屬性

註釋:來實現讓一個窗體總是處於其他窗體的前面而不會

註釋:被其他窗體所遮住。

註釋:-------------------------------------------

option explicit

註釋:【vb宣告】

註釋: private 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

註釋:【說明】

註釋: 這個函式能為視窗指定一個新位置和狀態。它也可改變視窗在內部視窗列表中的位置。

該函式與deferwindowpos函式相似,只是它的作用是立即表現出來的(在vb裡使用:針對vb窗體,如它們在win32下遮蔽或最小化,則需重設最頂部狀態。如有必要,請用一個子類處理模組來重設最頂部狀態

註釋:【返回值】

註釋: long,非零表示成功,零表示失敗。會設定getlasterror

註釋:【備註】

註釋: 視窗成為最頂級視窗後,它下屬的所有視窗也會進入最頂級。一旦將其設為非最頂級,則它的所有下屬和物主視窗也會轉為非最頂級。

z序列用垂直於螢幕的一根假想z軸量化這種從頂部到底部排列的視窗順序

註釋:【參數列】

註釋: hwnd ----------- long,欲定位的視窗

註釋: hwndinsertafter - long,視窗控制代碼。在視窗列表中,視窗hwnd會置於這個視窗控制代碼的後面。也可能選用下述值之一:

註釋: hwnd_bottom 將視窗置於視窗列表底部

註釋: hwnd_top 將視窗置於z序列的頂部;z序列代表在分級結構中,視窗針對一個給定級別的視窗顯示的順序

註釋: hwnd_topmost 將視窗置於列表頂部,並位於任何最頂部視窗的前面 -1

註釋: hwnd_notopmost 將視窗置於列表頂部,並位於任何最頂部視窗的後面 -2

註釋: x -------------- long,視窗新的x座標。如hwnd是一個子視窗,則x用父視窗的客戶區座標表示

註釋: y -------------- long,視窗新的y座標。如hwnd是一個子視窗,則y用父視窗的客戶區座標表示

註釋: cx ------------- long,指定新的視窗寬度

註釋: cy ------------- long,指定新的視窗高度

註釋: wflags --------- long,包含了旗標的一個整數,是下列之一:

註釋: swp_drawframe 圍繞視窗畫一個框

註釋: swp_hidewindow 隱藏視窗

註釋: swp_noactivate 不啟用視窗 &h10

註釋: swp_nomove 保持當前位置 (x和y設定將被忽略) &h2

註釋: swp_noredraw 視窗不自動重畫

註釋: swp_nosize 保持當前大小 (cx和cy會被忽略) &h1

註釋: swp_nozorder 保持視窗在列表的當前位置 (hwndinsertafter將被忽略)

註釋: swp_showwindow 顯示視窗 &h40

註釋: swp_framechanged 強迫一條wm_nccalcsize訊息進入視窗,即使視窗的大小沒有改變

private 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

const hwnd_topmost = -1

const swp_showwindow = &h40

private sub form_load()

dim retvalue as long

註釋:將窗體設定為處於所有視窗的頂層,注意在 vb 中執行時,

'可能不行,但編譯成exe後就可以了

retvalue = setwindowpos(me.hwnd, hwnd_topmost, me.currentx,

me.currenty, 300, 300, swp_showwindow)

end sub

2樓:匿名使用者

不用設定,點選下就好了,

的主視窗是什麼?能有幾個,word的主視窗是什麼?能有幾個?

問題不是很清楚耶?word主視窗由標題欄 選單欄 各種工具欄 標尺 文字區 滾動條以及狀態列組成。你開啟多少word,就有多少個主視窗!word的主視窗主要包括哪些基本內容?它由標題欄 選單欄 各種工具欄 標尺 文字區 滾動條以及狀態列組成。各組成部分作用介紹如下 1 標題欄 標題欄顯示出應用程式的...

vb 如何設定讀取密碼在ini文字中

應該這下面合適你的要求了。private sub command1 click if dir f password.ini then open f password.ini for input as 1 line input 1,mima close 1 if text1.text mima the...

VB新手,該如何起步,VB中如何讓程式開機啟動?

先學access,比vb精彩,幫助檔案也很全面,什麼都圖形化了最容易上手,學會了access就深一點學sql server,再發展到vba 為什麼要這樣,因為要為c s架構打基礎,大部分vb做的小程式離不開sql和access做後臺資料庫,不然你學的沒一個實用的,自然學不會,就像大學學程式設計一樣,...