MFC菜单以及与菜单相关联的操作.ppt

上传人:za****8 文档编号:13189873 上传时间:2020-06-07 格式:PPT 页数:24 大小:238.46KB
返回 下载 相关 举报
MFC菜单以及与菜单相关联的操作.ppt_第1页
第1页 / 共24页
MFC菜单以及与菜单相关联的操作.ppt_第2页
第2页 / 共24页
MFC菜单以及与菜单相关联的操作.ppt_第3页
第3页 / 共24页
点击查看更多>>
资源描述
菜单以及与菜单相关联的操作,消息的分类,标准消息除WM_COMMAND之外,所有以WM_开头的消息。从CWnd派生的类,都可以接收到这类消息。命令消息来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND呈现。在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。从CCmdTarget派生的类,都可以接收到这类消息。通告消息由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND形式呈现。从CCmdTarget派生的类,都可以接收到这类消息。,一个类接收一个命令消息后,文件做了哪些修改?(a)在类的定义中的消息映射中添加命令消息函数原型(b)在源文件的消息映射中用ON_COMMAND宏将菜单项的ID号和命令消息响应函数进行关联(c)在源文件中增加了命令消息响应函数。它的形式跟Windows标准消息是一样的,不同的是ON_COMMAND宏。,标准的Windows消息的路由:直接在消息映射表中上溯,在消息映射表中查找,如果吻合就调用表中所记录的消息处理程序。命令消息的路由呢?,命令消息的路由,AfxWndProc,AfxCallWndProc,WindowProc,OnWndMsg,OnCommand,OnNotify,OnCmdMsg,视图类-文档类-框架类-应用类,添加2个菜单,ID值分别为IDM_UNDO和IDM_DELETE_ALL,分别用来删除最后画的一条直线和窗口中所有的直线。,(1)为视图类添加对这2个菜单项的消息响应(2)OnUndo()intnUpperBound=m_ptrArray.GetUpperBound();if(nUpperBoundInsertMenu(2,MF_BYPOSITION|MF_POPUP,(UINT)menu.m_hMenu,“测试);在这个弹出菜单中添加菜单项。menu.AppendMenu(MF_STRING,111,Hello);menu.AppendMenu(MF_STRING,112,“Welcome);如果想在File菜单的末尾添加一个菜单项GetMenu()-GetSubMenu(0)-AppendMenu(MF_STRING,113,“Sing);,在框架窗口创建之后动态删除菜单,如果想删除编辑这个子菜单。可用DeleteMenu删除弹出菜单或菜单项。具体删除的是哪个,取决于是谁调用DeleteMenu函数,如果是菜单栏的指针调用该函数,则删除弹出菜单,如果是子菜单的指针去调用,则删除菜单项。GetMenu()-DeleteMenu(1,MF_BYPOSITION);删除File中的打开,可以这样GetMenu()-GetSubMenu(0)-DeleteMenu(2,MF_BYPOSITION);先获取子菜单的指针,可以通过索引去找,也可以通过命令ID去寻找。,对插入的菜单项Hello进行菜单的响应,动态创建的菜单如何去添加添加菜单消息响应函数,当然手动去添加。我们借助ClassWizard为一个类去添加一个菜单响应的命令消息的方法,然后照猫画虎去填写。(1)在头文件中声明函数原型。afx_msgvoidOnHello();(2)对于命令消息,用ONCOMMAND宏来响应的。在源文件中ON_COMMAND(111,OnHello)(3)函数本身,在源文件中voidCMainFrame:OnHello()MessageBox(Hello!);,如何在非框架类中对菜单进行操作,由于菜单栏是框架窗口的一部分,由框架窗口来管理,在别的类中要对菜单进行操作,首先要得到框架。AfxGetMainWnd()-GetMenu();或AfxGetApp()-m_pMainWnd-GetMenu();,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!