VisualFreeBASIC基础——窗体的使用

    新建工程后,会直接显示窗体,这时,我们单击窗体(默认就显示窗体属性,如果有控件需要单击窗体),就可以看到属性窗口显示的窗体属性。

VisualFreeBASIC基础——窗体的使用_第1张图片

   我们挑选一些常用的属性进行介绍

1、Name(名称)属性

    该属性是窗体实例化对象的名称,在编辑代码时,直接使用【窗体名.属性/方法】或者【窗体名.控件名.属性/方法】。与VB里的使用方法一样,在窗体中,可以使用Me来代替窗体名。

2、Style(外观) 属性

    该属性是设置窗体的样式(VFB里翻译成外观,反正理解了就好),可以设置不同边框和外观的窗体。包括0 - 无边框,1 - 细边框,2 - 3D边框,3 -  常规窗口,4 - 工具窗口,5 - 自定义窗口。默认为3 -  常规窗口。

    我们设计窗口时,一般都使用的是常规窗口,如果需要窗体作为子窗体时,就常用无边框窗口。

3、Icon(图标)属性

    就是设置窗体左上角的图标,需要通过图像库里添加。如果不设置为系统默认应用程序图标。图像库如图所示:

VisualFreeBASIC基础——窗体的使用_第2张图片

    这里使用的是VFB的默认图标,默认图标需要程序编译运行一次后才能自动生成。也可以添加自己喜欢的图标,必须是Ico文件格式。添加图标后,窗体显示如图:窗体中有了图标,属性了显示图标名称Default.ico

VisualFreeBASIC基础——窗体的使用_第3张图片

    这里说一下编译窗体,就是直接点击工具栏    中间的图标,即可看到生成了一个窗体并运行了,如图。(左边是编译(只编译生成EXE,不运行),中间是编译运行(编译生成EXE后,运行EXE),右边是运行(直接运行工程目录下的EXE,如果有))

VisualFreeBASIC基础——窗体的使用_第4张图片

4、Caption(标题)属性

    标题属性就是设置窗口的标题,默认是跟窗体名一样的。比如我们修改窗体名为【第一个例子】,效果如下:

VisualFreeBASIC基础——窗体的使用_第5张图片

5、StartPosition(启动位置)属性

    该属性设置窗体第一次出现在屏幕的位置。0 - 手动。(即不调整,由Left和Top属性指定)1 - 屏幕中心。2 - 父窗体中心。

6、Enabled(可用)

    该属性设置窗体是否可用,如果为false,则不可用(点击鼠标不会有反应)。一般用于子窗体的设置。

7、Left(位置X)、Top(位置Y)、Width(宽度)、Height(高度)

    这4个属性,Left和Top决定了窗体所在位置(这里要注意,第一次出现时,跟StartPosition有关)。Width和Height指定了窗体的大小。

8、Child(子窗口)

    当窗体用于子窗体时,该属性设置True。(比如在Tab控件里就需要使用窗口作为子窗体)

9、SizeBox(尺寸边框)

    该属性设置为True时,窗体可以通过鼠标调整大小,设置为False时,是固定大小,不能通过鼠标调整。

10、MaximizeBox(最大化按钮)、MinimizeBox(最小化按钮)

    设置是否有最大化、最小化按钮。(有时候我们不想调整窗体大小,则把最大化按钮设置成False)

    属性就介绍这些,其他的大家自己了解吧。然后我们看看窗口的事件。

1、WM_Create事件

Sub Form1_WM_Create(hWndForm As hWnd,UserData As Integer)  '完成创建窗口及所有的控件后,此时窗口还未显示。注:自定义消息里 WM_Create 此时还未创建控件和初始赋值。
    
End Sub

    即窗口的WM_CREATE消息产生的事件,是窗口创建但未显示时的事件。跟VB6的Load事件差不多。一般的初始化赋值之类的可以在这个事件里完成,特别是控件的背景色,必须在这个事件里设置,否则显示不正常。

2、Shown事件

Sub Form1_Shown(hWndForm As hWnd,UserData As Integer)  '窗口完全显示后。UserData 来自显示窗口最后1个参数。
    
End Sub

    这个事件是窗口双击后默认产生的事件,是窗口完全显示后产生的事件。我们可以测试一下WM_Create和Shown事件的先后顺序。在这两个事件里分别用PrintA打印事件名称,VFB提供了调试显示的窗体。代码如下:

Sub Form1_Shown(hWndForm As hWnd,UserData As Integer)  '窗口完全显示后。UserData 来自显示窗口最后1个参数。
    PrintA "Shown"
End Sub

Sub Form1_WM_Create(hWndForm As hWnd,UserData As Integer)  '完成创建窗口及所有的控件后,此时窗口还未显示。注:自定义消息里 WM_Create 此时还未创建控件和初始赋值。
    PrintA "WM_Create"
End Sub

    点击编译运行即可看到输出结果:先执行WM_Create后执行Shown

VisualFreeBASIC基础——窗体的使用_第6张图片

3、WM_Size事件

Sub Form1_WM_Size(hWndForm As hWnd, fwSizeType As Long, nWidth As Long, nHeight As Long)  '窗口已经改变了大小
   'fwSizeType = SIZE_MAXHIDE     SIZE_MAXIMIZED   SIZE_MAXSHOW    SIZE_MINIMIZED    SIZE_RESTORED  
   ''            其他窗口最大化   窗口已最大化     其他窗口恢复    窗口已最小化      窗口已调整大小
   if fwSizeType = SIZE_MINIMIZED Then Return 
   'xxx.Move AfxScaleX(5), AfxScaleY(5), nWidth - AfxScaleX(10), nHeight - AfxScaleY(30)
       
End Sub

    窗口尺寸大小改变时,都会触发这个事件。我们经常在这个事件里通过Move方法来调整控件的位置和大小。

4、WM_Close事件

Function Form1_WM_Close(hWndForm As hWnd) As LResult  '即将关闭窗口,返回非0可阻止关闭
 
   Function = FALSE ' 如果想阻止窗口关闭,则应返回 TRUE 。
End Function

    窗口即将关闭时产生这个事件,如果希望窗口不关闭,则返回True即可。比如我们可以用AfxMsg(VFB里的MessageBox调用函数,你也可以直接使用API的MessageBox)来询问是否需要关闭窗体,代码如下:

Function Form1_WM_Close(hWndForm As hWnd) As LResult  '即将关闭窗口,返回非0可阻止关闭
    if AfxMsg("你真的要关闭窗体吗", "询问", MB_OKCANCEL) = IDCANCEL Then  '如果按取消
        Function = True                                                 '则停止关闭窗口
    Else                                                                '否则关闭窗口
        Function = FALSE ' 如果想阻止窗口关闭,则应返回 TRUE 。
    End If
End Function

5、Custom事件

Function Form1_Custom(hWndForm As hWnd, wMsg As UInteger, wParam As wParam, lParam As lParam) As LResult  '自定义消息(全部消息),在其它事件处理后才轮到本事件。
   Select Case wMsg 
      Case    

      Case    

      Case 
         
   End Select 
   Function = FALSE ' 若不想系统继续处理此消息,则应返回 TRUE (俗称吃掉消息)。
End Function

    这个是用户自定义的事件,里面可以是自定义的消息,也可以是系统的消息,是个万能事件。只要你熟悉Win32 SDK开发就能够非常方便的使用。

    其他事件诸如鼠标左键按下(WM_LButtonDown)、鼠标左键弹起(WM_LButtonUp),鼠标右键按下(WM_RButtonDown)、鼠标右键弹起(WM_RButtonUp)和鼠标移动(WM_MouseMove)等等属性,根据实际需要再实例中再说明。

你可能感兴趣的:(FreeBASIC实例工程,freebasic)