MDI窗体的优化---上

来源:互联网 发布:linux删除进程命令 编辑:程序博客网 时间:2024/06/06 00:46

     对于刚刚接手的 机房收费系统。

     该系统,最外层是一个MDI窗体。对于其他的操作,都在MDi子窗体里面进行。


      当看到这种窗体的时候,我们毫不犹豫的就说,这个窗体的主窗体是一个MDI窗体。其他的都是他的子窗体。

      所以我们在做系统的时候,创建一个MDI窗体。但是我们会发现,在MDI窗体上不能添加 按钮其他控件。所以我们需要一个容器控件。大部分人都会想到的时pictureBox因为这是一个非常简单,有代表的容器控件。

      刚做完主窗体的时候,没有什么错。但是当你有MDI子窗体form1的时候,你会发现,问题来了。不管你怎么调整,子窗体form1都看不到。

 

      下面举一个小例子,可以解决以上问题。

      这是一个MDI窗体,上面的是一个pictureBox控件,当点击按钮的时候,弹出form1子窗体。


当点击按钮的时候,你会看到下面这种情况。


      子窗体form1picture在同一个层级。所以看不到子窗体。

      下面给出一种解决办法:

使用API函数----,将form1设置成为pictureBox的子窗体。这样,form1就可以显示在pictureBox前面了。


Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Sub Command1_Click()    SetParent Form1.hWnd, MDIForm1.hWnd    Form1.ShowEnd Sub


     使用api函数,就可以把子窗体form1放置在pictureBox之上显示出来了




     但是form1显示的不完全,这时就需要设置子窗体的长宽了

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Sub Command1_Click()    SetParent Form1.hWnd, MDIForm1.hWnd    Form1.Show    Form1.Width = Picture1.ScaleWidth    Form1.Height = Picture1.ScaleHeightEnd Sub



虽然问题解决了,但是视图的美观却被打破了。

MDI子窗体最大化后的标题栏在MDI窗体的菜单栏下方。而且,MDI子窗体最小化后,就找不到了。

 

为了实现更友好的主界面,我们在下一期讲解。