|
|
|
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。 |
|