机房收费系统之父窗体(二)

    xiaoxiao2025-04-14  9

    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

    转载请注明原文地址: https://ju.6miu.com/read-1298040.html
    最新回复(0)