MDI多文档窗体
1. 窗体颜色为深灰色
2. 父窗体在没添加Picture控件之前,不能添加任何控件,但可以添加菜单,在添加picture控件之后可以在picture控件上画其它控件了,且只有picture控件能作容器
3. 一个工程中只有一个MDI窗体(相当于一家只能有一位父亲)
4. 添加MDI窗体的目的就是还有子窗体,当Form窗体的MDIChild属性改为Ture时,就构成了父窗体与子窗体的关 系(相当于父亲和儿子)
5. 父窗体是一个容器(自我理解)
6. 设置子窗体的作用:
当父窗体的状态改变时,子窗体随其一同改变
比如:在子窗体打开状态下,关闭父窗体,子窗体会一同被关闭,如果不设为子窗体,在子窗体打开状态下,关闭父窗体,子窗体不会一同被关闭
7. 子窗体的显示问题
1>图片框未填充满整个窗体
子窗体MDIChild属性为false
(子)窗体正常显示(为什么把子括起来了,因为此时MDIChild为false,还不是子窗体,在此为区别父窗体)
子窗体MDIChild属性为Ture
子窗体在父窗体没被子窗体填充的位置中显示出来
2>图片框填充满整个窗体
子窗体MDIChild属性为false
(子)窗体正常显示(为什么把子括起来了,因为此时MDIChild 为false,还不是子窗体,在此为区别父窗体)
子窗体MDIChild属性为Ture
此时看不到子窗体,实际子窗体显示出来了,只是显示在picture控件的后面了
解决子窗体不能正常显示的办法:
在模块中添加 API函数:SetParent
Public Declare Function SetParent Lib "user32"(ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
在要显示子窗体前添加如下代码:
SetParent Form1.hWnd, Picture1.hWnd
Form1.Show
此时问题已解决,但此时子窗体在父窗体的最上面显示一小条,这时需要在子窗体的Resize事件中改变子窗体的大小和位置,否则若只改变位置,不改大小,子窗体还是一小条:(代码举例)
PrivateSub Form_Resize()
Me.Left =(MDIForm1.Width - Me.Width) / 2 '使窗体显示在父窗体中间
Me.Top =(MDIForm1.Height - Me.Height) / 2
Me.Height= MDIForm1.Height / 2 '使窗体的大小为父窗体的一半
Me.Width= MDIForm1.Width / 2
End Sub
SetParent的用法:http://blog.csdn.net/wrs120/article/details/52203227