 |
对于VB6,直接在窗体的Picture属性中设置背景即可,但是这样图像不能平铺或拉伸。要解决平铺或拉伸这个问题可以参考例子 MDI_Background_Demo.zip,这个例子是从http://www.mvps.org/vbvision/grouped_demos.htm下载的。
对于VB5及其以前版本,也可以采用下面说的各种方法:
在Windows中标准的做法应该是处理MDI父窗口的WM_ERASEBKGND,但这对VB来说太麻烦了。一个比较简单的办法是先建立一个Form,假设叫FrmCntnr,设置MDIChild为True,Border为0(无)。然后,在Form中加入如下代码:
Private Sub Form_Activate()
Me.ZOrder 1
End Sub
确保该Form出现在所有窗口的最下面。
在MDIForm的Resize事件中调整Form的大小,以保证它和MDIForm的大小相适应。假设MDIMenu是MDI窗体。
Private Sub MDIForm_Resize()
If MDIMenu.WindowState <> 1 Then
FrmCntnr.Height = MDIMenu.ScaleHeight
FrmCntnr.Width = MDIMenu.ScaleWidth
End If
End Sub
由于你可以在普通的Form中设置背景,所以你可以把这个作为背景的Form当作MDIForm的背景。
ZU的意见:
我的建议同样是加一个背景Form但是方法是将背景Form作为MDIForm的子窗体,将其ControlBox设为False并清除Caption的值,WindowState设为2-Maximized,在MDIForm_Load()添加背景Form.Show。好处是不用再调整背景Form大小。
传说一梦的意见:
但是,如果其它窗口进行非最大化调整时,Form也一样跟着变为非最大化。所以ZU的意见考虑不是太周全。
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 窗体与菜单, form, window, tform。
|