在vb中大小視窗的設定問題,怎麼樣在大視窗上面設定小視窗,而且小視窗還一直浮動,在大視窗之前
只能操作form2 其他窗體無法操作: form2。show 1
也可以透過API來控制:
Option Explicit
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)
Private Sub Command1_Click()
‘ 視窗置前
Dim myval
myval = SetWindowPos(form1。hwnd, -1, 0, 0, 0, 0, 3)
End Sub
Private Sub Command2_Click()
’視窗正常
Dim myval
myval = SetWindowPos(form1。hwnd, -2, 0, 0, 0, 0, 3)
End Sub
Private Sub Command3_Click()
‘視窗置後
Dim myval
myval = SetWindowPos(form1。hwnd, 1, 0, 0, 0, 0, 3)
End Sub
還有一些:
Option Explicit
’‘使指定視窗總在最前
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_NOMOVE = &H2
Const SWP_NOSIZE = &H1
Const SWP_NOZORDER = &H8
Sub SetFormTopmost(TheForm As Form)
SetWindowPos TheForm。hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOZORDER + SWP_NOMOVE + SWP_NOSIZE
End Sub
Sub Form_Load()
SetFormTopmost Me ’‘只需要改動這裡,ME換成你想放在最前的窗體名
End Sub
VB6中的模式/無模式窗體及父窗體的概念
模式窗體的意義:
1。 可以始終獲得使用者焦點,意味著別的窗體將不能獲得使用者焦點;
2。 在不用API的前提下,始終顯示在其他窗體前方。
父窗體的意義:
1。 子窗體始終位於父窗體前方,即使父窗體獲得了焦點;
2。 父窗體最小化時,子窗體亦最小化;父窗體關閉時,子窗體亦關閉。
顯示一個窗體時,可以用Show()方法,例如:Form。Show
其實Show()方法是帶可選引數的,完整的函式定義為:
SomeForm。Show [style], [owner]
其中style就是是否為模式窗體:
vbModeless = 0 無模式窗體(預設)
vbModal = 1 模式窗體 :意味著這個窗體開啟後原來的窗體將不能相應使用者操作
其中owner就是是否指定父窗體:
省略 :沒有父窗體,那麼當前窗體和可以來回切換焦點,且獲得焦點的窗體會覆蓋另一個窗體。
指定一個,例如Me : 那麼當前窗體是父窗體,即將彈出的新窗體為當前窗體的子窗體。
舉例:
Form2。Show ’=Form2。Show 0
Form2。Show vbModal ‘=Form2。Show 1
Form2。Show vbModeless ’=Form2。Show 0
Form2。Show vbModal , Form1 ‘=Form2。Show 1, Form1
Form2。Show vbModeless , Form1 ’=Form2。Show 0, Form1
我怎麼曉得