第六章 菜单

l  菜单命令的响应顺序:视类,文档类,框架类,应用程序类。

l  AfxMessageBox函数:供不是从CWnd类派生出的类使用

l  Windows消息的分类:

标准消息:除WM_COMMAND之外,所有以WM_开头的消息。从CWnd类派生的类都可以接受这类消息。

命令消息:来自菜单、加速键或工具栏按钮的消息。这类消息以WM_COMMAND形式呈现,在MFC中通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。从CcmdTarget类派生的类都可以接收这类消息。

通告消息:由控件产生的消息,例如按钮的单击、列表框的选择等都会产生这类消息,目的是为了向其父窗口(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND形式呈现的。从CCmdTarget派生的类都可以接收到这类消息。

CWnd派生于CcmdTarget。文档类和程序类派生于CcmdTargetl.

l  菜单命令路由

l  菜单命令消息路由的具体过程:(P168

l  CMenu* GetMenu()const;获得只想菜单栏的指针

l  CMenu* GetSubMenuint nPosconst 获得一个菜单的子菜单,nPos子菜单索引号

l  UINT CheckMenuItem( UINT nIDCheckItem, UINT nCheck );为菜单项添加标记

l  BOOL SetDefaultItem( UINT uItem, BOOL fByPos = FALSE );设置子菜单的默认菜单项

l  分隔符在子菜单中占据索引位置

l  一个子菜单只能有一个默认菜单项。

l  BOOL SetMenuItemBitmaps( UINT nPosition, UINT nFlags, const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked );将指定位图与菜单项关联起来。

l  UINT EnableMenuItem( UINT nIDEnableItem, UINT nEnable );设置菜单项的状态

l  ON_UPDATE_COMMAND_UI

l  BOOL SetMenu( HMENU hMenu ); 装在菜单

l  MFC菜单命令更新机制(p184

菜单项的维护依赖于CN_UPDATE_COMMAND_UI消息。CCmdUI类。

l  菜单项与工具栏上某个按钮相关联,只要他们的ID设置为同一个标识就可以了。

l  BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL );显示快捷菜单

l  BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );把一个新菜单项添加到一个指定的菜单项目的末尾

l  BOOL InsertMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL ); 菜单项目之间插入一个新菜单项目

l  BOOL DeleteMenu( UINT nPosition, UINT nFlags );删除菜单项目

 

你可能感兴趣的:(第六章 菜单)