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

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.youkuaiyun.com/wrs120/article/details/52203227

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值