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做後臺資料庫,不然你學的沒一個實用的,自然學不會,就像大學學程式設計一樣,...