对于刚刚接手的 机房收费系统。
该系统,最外层是一个MDI窗体。对于其他的操作,都在MDi子窗体里面进行。
当看到这种窗体的时候,我们毫不犹豫的就说,这个窗体的主窗体是一个MDI窗体。其他的都是他的子窗体。
所以我们在做系统的时候,创建一个MDI窗体。但是我们会发现,在MDI窗体上不能添加 按钮等其他控件。所以我们需要一个容器控件。大部分人都会想到的时pictureBox因为这是一个非常简单,有代表的容器控件。
刚做完主窗体的时候,没有什么错。但是当你有MDI子窗体form1的时候,你会发现,问题来了。不管你怎么调整,子窗体form1都看不到。
下面举一个小例子,可以解决以上问题。
这是一个MDI窗体,上面的是一个pictureBox控件,当点击按钮的时候,弹出form1子窗体。
当点击按钮的时候,你会看到下面这种情况。
子窗体form1和picture在同一个层级。所以看不到子窗体。
下面给出一种解决办法:
使用API函数----,将form1设置成为pictureBox的子窗体。这样,form1就可以显示在pictureBox前面了。
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Sub Command1_Click()
SetParent Form1.hWnd, MDIForm1.hWnd
Form1.Show
End Sub
使用 api函数,就可以把子窗体form1放置在pictureBox之上显示出来了。
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long Private Sub Command1_Click() SetParent Form1.hWnd, MDIForm1.hWnd Form1.Show Form1.Width = Picture1.ScaleWidth Form1.Height = Picture1.ScaleHeight End Sub
虽然问题解决了,但是视图的美观却被打破了。
MDI子窗体最大化后的标题栏在MDI窗体的菜单栏下方。而且,MDI子窗体最小化后,就找不到了。
为了实现更友好的主界面,我们在下一期讲解。