第4章菜单、快捷键和控制条 内容摘要 1.菜单 2.快捷菜单 3.动态生成菜单 4.工具条 5.状态条
第4章 菜单、快捷键和控制条 内容摘要: 1. 菜单 2. 快捷菜单 3. 动态生成菜单 4. 工具条 5. 状态条 返回目录
4.1 41菜单 学习目标 1.响应菜单消息 2.控制菜单状态 3.使用快捷键
4.1 菜单 学习目标 1. 响应菜单消息 2. 控制菜单状态 3. 使用快捷键 4.1 返回第4章
4.1 程序的实现步骤 1.利用 App wizard生成程序框架( Menutest) 编辑资源 3.加入菜单消息处理函数 4.菜单命令的更新控制
程序的实现步骤 1. 利用AppWizard生成程序框架(MenuTest) 2. 编辑资源 3. 加入菜单消息处理函数 4. 菜单命令的更新控制 4.1
4.1 步骤1生成程序框架( Minutest) 1.项目名称: Menu test 2.选择单文档界面应用程序( Single document)
步骤1 生成程序框架(MenuTest) 1. 项目名称: MenuTest 2. 选择单文档界面应用程序(Single document) 4.1
4.1 步骤2编辑资源 1.编辑菜单资源 画图Pop-p选中 Caption ID Prompt 矩形(&R)tCtr+ R ID DRAW RECT在视中画矩形 椭圆(&C) talt+C ID dRaW Circle在视中画椭圆 2.编辑快捷键资源 d modifiers ID DRAW RECT Ctrl R ID DRAW CIRCL Alt
步骤2 编辑资源 1.编辑菜单资源 画图 Pop-up 选中 Caption ID Prompt 矩形(&R)\tCtrl+R ID_DRAW_RECT 在视中画矩形 椭圆(&C)\tAlt+C ID_DRAW_CIRCLE 在视中画椭圆 2.编辑快捷键资源 ID Modifiers Key ID_DRAW_RECT Ctrl R ID_DRAW_CIRCL Alt C 4.1
4.1 步骤3加入菜单消息处理函数 Class name Objects IDs Messages CMenuTest view ID DRAW REct COMmaND 2. CMenuTest view ID DRAW CIRCLE COMMAND void CMenu TestView: OnDrawRecto void CMenu TestView On Circle CClientDC dc(this CClientDc dc(this) dc Rectangle (50, 50, 200, 150) dc Ellipse(250,50,400,150)
步骤3 加入菜单消息处理函数 Class Name Objects IDs Messages 1. CMenuTestView ID_DRAW_RECT COMMAND 2. CMenuTestView ID_DRAW_ CIRCLE COMMAND 4.1 void CMenuTestView::OnDrawRect() { CClientDC dc(this); dc.Rectangle(50,50,200,150); } void CMenuTestView::OnDrawCircle() { CClientDC dc(this); dc.Ellipse(250,50,400,150); }
4.1 步骤4菜单命令的更新控袆 1.在画图菜单中再添加两个菜单项 Caption Prompt 允许画矩形 ID DRAW ENABLE 禁止画矩形Ⅰ D DRAW DISABLE 2.在视类中添加一个记录当前“矩形”菜单项状态的变 量 BOOL m Enable 3.在构造函数中初始化数据成员 m enable m Enable =TRUE:
步骤4 菜单命令的更新控制 1. 在画图 菜单中再添加两个菜单项 Caption ID Prompt 允许画矩形 ID_DRAW_ENABLE -------- 禁止画矩形 ID_DRAW_DISABLE -------- 2. 在视类中添加一个记录当前“矩形”菜单项状态的变 量 BOOL m_Enable; 3. 在构造函数中初始化数据成员m_Enable m_ Enable =TRUE; 4.1
4.1 步骤4菜单命令的更新控制 4.添加菜单响应函数 Class Name Objects IDs Messages CMenu Test view ID DRAW ENABLE COMMAND 2. CMenu Test View ID DRAW DISABLE COMMAND 3. CMenu Test view ID DRAW Rect UPDATE COMMAND UI 4. CMenu Test view D DRAW ENABLE UPDATE COMMAND UI 5. CMenu Test view ID DRAW DISABLE UPDATE COMMAND UI void CMenu TestView OnUpdate DrawRect(CCmdUI* pcmdUl) pCmdUl->Enable(m Enable
步骤4 菜单命令的更新控制 4. 添加 菜单响应函数 Class Name Objects IDs Messages 1. CMenuTestView ID_DRAW_ENABLE COMMAND 2. CMenuTestView ID_DRAW_ DISABLE COMMAND 3. CMenuTestView ID_DRAW_RECT UPDATE_COMMAND_UI 4. CMenuTestView ID_DRAW_ENABLE UPDATE_COMMAND_UI 5. CMenuTestView ID_DRAW_ DISABLE UPDATE_COMMAND_UI 4.1 void CMenuTestView::OnUpdateDrawRect(CCmdUI* pCmdUI) { pCmdUI->Enable(m_Enable); }
步骤4菜单命令的更新控制 4.1 void CMenu TestView On DrawDisableo void CMenu Test View: On DrawEnableo m enable false m Enable TRUE void CMenu TestView OnUpdate DrawEnable(CCmdUI* pCmdUI) pCmdUl->SetCheck(m Enable 1: 0) void CMenu TestView OnUpdate Draw Disable(CCmdUI* pCmdUl) pCmdUl->SetCheck(m Enable ?0: 1)
步骤4 菜单命令的更新控制 4.1 void CMenuTestView::OnDrawDisable() { m_Enable = FALSE; } void CMenuTestView::OnDrawEnable() { m_Enable = TRUE; } void CMenuTestView::OnUpdateDrawEnable(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_Enable ? 1:0); } void CMenuTestView::OnUpdateDrawDisable(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_Enable ? 0:1); }
4.1 基本知识 1. pCmdUl->Enable(true false) 2. pCmdUI->Set Check( 10 3.使用 COMMAND消息响应菜单项的选 择事件 4. UPDATE COMMAND U消息控制菜 使用单项状态
基本知识 1. pCmdUI->Enable(true | false); 2. pCmdUI->SetCheck( 1| 0); 3. 使用COMMAND消息响应菜单项的选 择事件 4. UPDATE_COMMAND_UI消息控制菜 使用单项状态 4.1