6.1 菜 单 设计
菜单是可视化编程的重要组成部分,是一种方便地给命令分组并访问这些命令的方法。菜单通常用来显示程序的各项功能,以方便用户选择执行,通过对菜单命令进行编程可以调用程序中相应的功能。
6.1.1 菜单类CMenu
在MFC中,CMenu类封装了Windows的菜单功能,它提供了多个方法用于创建、修改、合并菜单。CMenu类的主要方法如下。
(1)Attach方法:该方法用于将句柄关联到菜单对象上。语法如下:
BOOL Attach( HMENU hMenu );
参数说明
返回值:为非零,表示执行成功,否则执行失败。
(2)Detach方法:该方法从菜单对象上分离菜单句柄。语法如下:
HMENU Detach( );
返回值:分离的菜单句柄。
(3)FromHandle方法:该方法根据菜单句柄返回一个菜单对象指针,如果句柄没有关联的菜单对象,则一个临时的菜单对象指针将要被创建。语法如下:
static CMenu* PASCAL FromHandle( HMENU hMenu );
参数说明
返回值:菜单对象指针。
(4)CreateMenu方法:该方法用于创建一个菜单窗口,并将其关联到菜单对象上。语法如下:
返回值:执行成功,返回值为非零,否则为零。
(5)CreatePopupMenu方法:该方法用于创建一个弹出式菜单窗口,并将其关联到菜单对象上。语法如下:
BOOL CreatePopupMenu( );
返回值:执行成功,返回值为非零,否则为零。对于弹出式菜单,如果菜单窗口被释放,菜单对象将要被自动释放。
(6)LoadMenu方法:该方法从应用程序的可执行文件中加载一个菜单资源,将其关联到菜单对象上。语法如下:
BOOL LoadMenu( LPCTSTR lpszResourceName );
BOOL LoadMenu( UINT nIDResource );
参数说明
返回值:执行成功,返回值为非零,否则为零。
(7)DestroyMenu方法:该方法用于释放菜单窗口,当菜单窗口被释放前,它将从菜单对象上分离出来。语法如下:
BOOL DestroyMenu( );
(8)DeleteMenu方法:该方法用于从菜单中删除一个菜单项。语法如下:
BOOL DeleteMenu( UINT nPosition, UINT nFlags );
参数说明
(9)TrackPopupMenu方法:该方法用于显示一个弹出式菜单。语法如下:
BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL );
参数说明
(10)AppendMenu方法:该方法用于在菜单项的末尾添加一个新菜单。语法如下:
BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );
BOOL AppendMenu( UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );
参数说明
(11)CheckMenuItem方法:该方法用于在弹出的菜单项中放置或删除标记。语法如下:
UINT CheckMenuItem( UINT nIDCheckItem, UINT nCheck );
参数说明
(12)CheckMenuRadioItem方法:该方法用于将单选按钮放置在菜单项之前,或从组中所有的其他菜单项中删除单选按钮。语法如下:
BOOL CheckMenuRadioItem( UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags );
参数说明