进行机房MDI父窗体的创建过程中,最开始遇到的就是MDI窗体中不能添加除picturebox外的其他控件,需要使用picturebox来间接加载。至于为什么不能添加,目前还没有找到可理解的理由。(有合理解释的同学们可以留言)
当MDI窗体创建完成后,使用菜单栏点击是子窗体显示时却不能让其显示出来,原因是被PictureBox控件所遮挡。
按照setparent这个api函数便能解决上述问题,具体代码和解释如下。
<span style="font-size:18px;">‘基本数据设定 Private Sub basicDataSet_Click() SetParent frmDataSet.hwnd, frmMain.hwnd frmDataSet.Show End Sub</span>
其中的Setparent API 函数的作用是为一个物体指定一个新的父窗体作为容器。
声明方法:
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
函数功能:改变某个子窗体的父窗体。
参数:
hWndChild:子窗口句柄
hWndNewParent:新的父窗口句柄。如果该参数是NULL,则桌面窗口就成为新的父窗口。
窗体是能够显示了,可是却是下面这个样子?
那个子窗体被隐藏着呢,双击或者下拉才能全部显示,这样有些麻烦。所以只需修改子窗体显示时的尺寸即可。即子窗体borderstyle属性设置为2的前提下,form_load事件中写入me.height=***,me.width=***.其显示时大小为定义值。
运行时能够观察到,单击任何一个窗体,之前打开的窗体就会自动最小化,可以添加如下代码实现
<span style="font-size:18px;">Private Sub Form_Deactivate() '当其不再是活动窗口时,最小化到左下角,并依次排列 If Me.WindowState <> 1 Then Me.WindowState = 1 End If End Sub</span>