VisualFreeBASIC基础——菜单的使用

    VFB将菜单做成了控件,分为窗口菜单(TopMenu)和弹出菜单(PopupMenu)。窗口菜单显示在窗口中,弹出菜单一般用于右键弹出。从工具栏中选择窗口菜单和弹出菜单到设计窗体,选择窗口菜单,则可以看到属性栏中有Menu(菜单)属性,点击下拉按钮后会出现菜单编辑器,如图:

VisualFreeBASIC基础——菜单的使用_第1张图片

    新增按钮可以新增一个菜单,插入按钮可以插入菜单,上下箭头(不大用,其实鼠标点也是一样的)可以上下移动一个选中的位置,左右箭头可以修改菜单的级别。新增按钮后,在文字里输入显示的菜单名称,在名称里输入调用菜单的定义名称。快捷键、是否选中和是否可用都可以根据需要选择。如果菜单需要设置图标,则选择图像。要注意的是如果需要分隔线,则使用"-",名称不能为空。

编辑一个文件菜单示例,如图:

VisualFreeBASIC基础——菜单的使用_第2张图片

窗体上的效果如图:

VisualFreeBASIC基础——菜单的使用_第3张图片

双击窗体菜单后,即可看到自动生成的菜单事件。

Sub Form1_TopMenu1_WM_Command(hWndForm As hWnd,wID As ULong)  '点击了菜单项
   Select Case wID
      Case mnuFile ' 文件

      Case mnuFileNew ' 新建

      Case mnuFileOpen ' 打开

      Case mnuFileSave ' 保存

      Case mnuExit ' 退出

   End Select

End Sub

弹出菜单的编辑方式跟窗口菜单类似,不再重复,弹出菜单中设置剪切、复制、粘贴属性。

一、属性

1、Check(是否选中)

    该属性是菜单前是否有打钩选项,True则打钩,表示选中,False则不打钩,表示未选中。Check的参数就是之前菜单编辑的名称,这个名称也就是菜单的ID号。
2、Enabled(是否使能)

    该属性设置菜单是否可用的。Enabled的参数就是之前菜单编辑的名称。
3、hMenu(菜单句柄)

    该属性返回菜单句柄。

4、Text(文本)

    该属性设置菜单显示文字。Text的参数就是之前菜单编辑的名称。

二、方法

1、PopupMenu

该方法函数的原型如下:

Function PopupMenu(hWndParent As hWnd = 0, x As Long = 0, y As Long = 0) As Long '在当前鼠标位置,弹出此菜单,hWndParent 是接收菜单事件的窗口。返回点击的菜单项标识符。

hWndParent必须是菜单所在窗口,因为菜单的事件需要窗口来接收消息,不能是控件。x,y指定菜单显示的位置。

三、事件

1、WM_Command事件

Sub Form1_PopupMenu1_WM_Command(hWndForm As hWnd,wID As ULong)  '点击了菜单项
   Select Case wID
      Case mnuCut ' 剪切

      Case mnuCopy ' 复制

      Case mnuPaste ' 粘贴

   End Select

End Sub

    菜单的事件只要编辑好菜单,双击控件即可生成。

四、实例

 代码如下:

Sub Form1_TopMenu1_WM_Command(hWndForm As hWnd,wID As ULong)  '点击了菜单项
    Select Case wID
    Case mnuFile ' 文件       '不用
    Case mnuFileNew ' 新建
        AfxMsg "选择了【新建】"
    Case mnuFileOpen ' 打开
        AfxMsg "选择了【打开】"
    Case mnuFileSave ' 保存
        AfxMsg "选择了【保存】"
    Case mnuExit ' 退出
        Form1.Close  '关闭窗体
    End Select

End Sub

Sub Form1_WM_ContextMenu(hWndForm As hWnd, xPos As Long, yPos As Long)  '单击鼠标右键,通常用于弹出菜单
    PopupMenu1.PopupMenu(hWndForm,xPos,yPos)
End Sub

Sub Form1_PopupMenu1_WM_Command(hWndForm As hWnd,wID As ULong)  '点击了菜单项
    Select Case wID
    Case mnuCut ' 剪切
        AfxMsg "选择了【剪切】"
    Case mnuCopy ' 复制
        AfxMsg "选择了【复制】"
    Case mnuPaste ' 粘贴
        AfxMsg "选择了【粘贴】"
    End Select

End Sub

运行效果:

VisualFreeBASIC基础——菜单的使用_第4张图片

完整工程:

https://github.com/rainheart311/VisualFreeBASIC/tree/master/Menu

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