您的位置:寻梦网首页编程乐园VB 编程乐园VB问题全功略

VB问题全功略(8)

上一页(8)下一页

36、如何让表单一开始就显示在荧幕中央? (含工作列)
37、如何让表单一开始就显示在荧幕中央? (不含工作列
38、MDI Form可否跟一般的表单一样设定背景颜色 (BackColor)?
39、VB可以产生四角形以外其他形状的 Form 吗?
40、如何让一个 Form 出现在另一个非 MDIForm 的 Form 中?

36、如何让表单一开始就显示在荧幕中央? (含工作列)

共有二种方法

方法1: VB3/VB4之版本,可于 Form_Load() 程序中加入下列程式码:
Me.Move (Screen.Width-Width)\2, (Screen.Height-Height)\2

方法2:
VB5以上之版本,则直接将 Form 之 StartUpPosition 设成 (2-荧幕中央) 即可

37、如何让表单一开始就显示在荧幕中央? (不含工作列)

以下之程序在计算时会扣除工作列所占的高度 (或宽度),如果有启动 Microsoft Office 的快捷列的话,也会扣除快捷列所占的高度 (或宽度)。

Public Const SM_CXFULLSCREEN = 16
Public Const SM_CYFULLSCREEN = 17

#If Win32 Then
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
#Else
Declare Function GetSystemMetrics Lib "User" (ByVal nIndex As Integer) As Integer
#End If

Public Sub CenterForm(frm As Form)
frm.Left = Screen.TwipsPerPixelX * GetSystemMetrics(SM_CXFULLSCREEN) / 2 - frm.Width / 2
frm.Top = Screen.TwipsPerPixelY * GetSystemMetrics(SM_CYFULLSCREEN) / 2 - frm.Height / 2
End Sub

只要在 Form_Load 中使用 CenterForm Me 即可

38、MDI Form可否跟一般的表单一样设定背景颜色 (BackColor)?

VB3 以前的版本:不行。MDI Form没有此一功能。

VB4 / VB5 / VB6 :可以直接在属性表中设定!

39、VB可以产生四角形以外其他形状的 Form 吗?

这个问题,您一定无法想像有多容易,您可以产生任何形状的 Form,但必须借助 CreateEllipticRgn 及 SetWindowRgn 二个 API ,例如:

Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long

Private Sub Form_Load()
Dim lReturn As Long
Me.Show
lReturn = SetWindowRgn(hWnd, CreateEllipticRgn(10, 10, 340, 150), True)
End Sub

执行结果图片

CreateEllipticRgn 之四个参数说明如下:
X1:椭圆中心点之X轴位置,但以 Form 的实№边界为限。
Y1:椭圆中心点之Y轴位置,但以 Form 的实№边界为限。
X2:椭圆长边的长度
Y2:椭圆短边的长度的

40、如何让一个 Form 出现在另一个非 MDIForm 的 Form 中?

假设要将 Form2 放在 Form1 中,请在宣告区中宣告:

Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

在 Form2 中的 Form_Load 中加入 SetParent(Me.hWnd, Form1.hWnd) 即可。

但有一点要注意的是,在 Unload Form1 之前一定要先 Unload Form2。

上一页(8)下一页