注册 登录
编程论坛 VB6论坛

窗体显示的问题

chen3bing 发布于 2018-12-18 15:30, 1611 次点击
有两个窗体,一个窗体嵌在另一个窗体的前面。
Form2.Show vbModeless, Me
ControlPanel.Show vbModeless, Form2
就是ControlPanel嵌在Form2里面,ControlPanel窗体没有最小化按钮
这样做了以后,点击最小化按钮,form2最小化了,可是ControlPanel
窗体没有最小化。
可是如果改成
Form2.Show vbModeless, Me
ControlPanel.Show vbModeless, Me
点击Form2里的按钮,ControlPanel就消失了,空了一块。
请问高手,如何才能解决这个问题?谢谢!
2 回复
#2
yingshu2018-12-18 17:48
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Private Sub Command1_Click()
    SetParent Form3.hWnd, Form2.hWnd
    Form3.Show
End Sub
将窗体设置为父子关系
#3
ZHRXJR2018-12-20 12:46
   Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
函数参数说明:hWndChild  子窗口(控件)的句柄。hWndNewParent hWndChild 子窗口的新的父窗口(容器)。返回值:类型为 Long(长整型)。如果调用成功,返回前一个父窗口(容器)的句柄。
可用这个函数在运行期间将 VB 控件置入容器内部(例如:将一个窗体放入另一个窗体中,或者将控件从一个容器控件移至另一个容器控件中。)

程序代码:

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long   'API 的 SetParent 函数

Private Sub Command1_Click()   '窗体 Form1 的按钮单击事件
    Dim CB As Long
    CB = SetParent(Form3.hWnd, Form2.hWnd)    '取得函数的返回值。
    If CB > 0 Then   '函数返回值大于 0,说明函数调用成功。
    MsgBox "已经设置主窗体。"
    Unload Me   '关闭并清除 Form1 窗体
    Form2.Show    '打开刚刚设置的主窗体
    Form3.Show    '打开子窗体
    Else
    MsgBox "不能设置主窗体。"
    End If
End Sub

点击 Form1 中的 Command1 按钮完全没有问题,窗体 Form3 已经置于窗体 Form2 中。

[此贴子已经被作者于2018-12-20 12:56编辑过]

1