【转】菜单设计 CMenu

 

6.1  菜 单 设计

菜单是可视化编程的重要组成部分,是一种方便地给命令分组并访问这些命令的方法。菜单通常用来显示程序的各项功能,以方便用户选择执行,通过对菜单命令进行编程可以调用程序中相应的功能。

 

6.1.1  菜单类CMenu

在MFC中,CMenu类封装了Windows的菜单功能,它提供了多个方法用于创建、修改、合并菜单。CMenu类的主要方法如下。

(1)Attach方法:该方法用于将句柄关联到菜单对象上。语法如下:

BOOL Attach( HMENU hMenu );

参数说明

     hMenu:标识菜单句柄。

返回值:为非零,表示执行成功,否则执行失败。

(2)Detach方法:该方法从菜单对象上分离菜单句柄。语法如下:

HMENU Detach( );

返回值:分离的菜单句柄。

(3)FromHandle方法:该方法根据菜单句柄返回一个菜单对象指针,如果句柄没有关联的菜单对象,则一个临时的菜单对象指针将要被创建。语法如下:

static CMenu* PASCAL FromHandle( HMENU hMenu );

参数说明

     hMenu:标识菜单句柄。

返回值:菜单对象指针。

(4)CreateMenu方法:该方法用于创建一个菜单窗口,并将其关联到菜单对象上。语法如下:

     BOOL CreateMenu( );

返回值:执行成功,返回值为非零,否则为零。

(5)CreatePopupMenu方法:该方法用于创建一个弹出式菜单窗口,并将其关联到菜单对象上。语法如下:

BOOL CreatePopupMenu( );

返回值:执行成功,返回值为非零,否则为零。对于弹出式菜单,如果菜单窗口被释放,菜单对象将要被自动释放。

(6)LoadMenu方法:该方法从应用程序的可执行文件中加载一个菜单资源,将其关联到菜单对象上。语法如下:

BOOL LoadMenu( LPCTSTR lpszResourceName );

BOOL LoadMenu( UINT nIDResource );

参数说明

     lpszResourceName:标识资源名称。

     nIDResource:标识资源ID。

返回值:执行成功,返回值为非零,否则为零。

(7)DestroyMenu方法:该方法用于释放菜单窗口,当菜单窗口被释放前,它将从菜单对象上分离出来。语法如下:

BOOL DestroyMenu( );

   说明:当菜单对象的析构函数被调用时,将自动调用DestroyMenu方法释放菜单窗口。

(8)DeleteMenu方法:该方法用于从菜单中删除一个菜单项。语法如下:

BOOL DeleteMenu( UINT nPosition, UINT nFlags );

参数说明

     nPosition:标识某一个菜单项。

     nFlags:表示如何删除菜单项,可选值如下。

            MF_BYCOMMAND:根据nPosition标识的菜单ID删除菜单项。

            MF_BYPOSITION:根据nPosition标识的菜单位置删除菜单项。

(9)TrackPopupMenu方法:该方法用于显示一个弹出式菜单。语法如下:

BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL );

参数说明

     nFlags:表示屏幕位置标记和鼠标按钮标记。可选值如下。

            TPM_CENTERALIGN:在x水平位置居中显示菜单。

            TPM_LEFTALIGN:在x水平位置左方显示菜单。

            TPM_RIGHTALIGN:在x水平位置右方显示菜单。

            TPM_LEFTBUTTON:单击鼠标左键显示弹出式菜单。

            TPM_RIGHTBUTTON :单击鼠标右键显示弹出式菜单。

     x:以屏幕坐标标识弹出式菜单的水平坐标。

     y:以屏幕坐标标识弹出式菜单的垂直坐标。

     pWnd:标识弹出式菜单的所有者。

     lpRect:以屏幕坐标表示用户在菜单中的单击区域,如果为NULL,当用户单击弹出式菜单之外的区域,将释放菜单窗口。

(10)AppendMenu方法:该方法用于在菜单项的末尾添加一个新菜单。语法如下:

BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );

BOOL AppendMenu( UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );

参数说明

     nFlags:标识菜单项的状态信息。

     nIDNewItem:标识菜单项的ID。

     lpszNewItem:标识菜单项的内容。

     pBmp:标识关联菜单项的位图对象指针。

(11)CheckMenuItem方法:该方法用于在弹出的菜单项中放置或删除标记。语法如下:

UINT CheckMenuItem( UINT nIDCheckItem, UINT nCheck );

参数说明

     nIDCheckItem:指定由nCheck确定的将要检测的菜单项。

     nCheck:指定如何检测菜单项,并如何决定菜单中子菜单的位置。可选值如下。

            MF_BYCOMMAND:指定参数给出已存在菜单项的命令ID号,为默认值。

            MF_BYPOSITION:指定参数给出已存在菜单项的位置,第一项位置为0。

            MF_CHECKED:与MF_UNCHECKED一起用作开关,在菜单项之前放置默认的检测标记。

            MF_UNCHECKED:与MF_CHECKED一起用作开关,删除菜单项之前的检测标记。

(12)CheckMenuRadioItem方法:该方法用于将单选按钮放置在菜单项之前,或从组中所有的其他菜单项中删除单选按钮。语法如下:

BOOL CheckMenuRadioItem( UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags );

参数说明

     nIDFirst:指定单选按钮组中的第一个菜单项的值。

     nIDLast:指定单选按钮组中的最后一个菜单项的值。

     nIDItem:指定单选按钮组中被选中的菜单项的值。

     nFlags:对nIDFirst、nIDLast和nIDItem的解释,可选值如下:

           

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值