3个回答
展开全部
只能操作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
也可以通过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
模式窗体的意义:
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询