MFC菜单设计.docVIP

  • 46
  • 0
  • 约4.18千字
  • 约 5页
  • 2017-05-12 发布于河南
  • 举报
MFC菜单设计

实验17 MFC菜单设计 17.1实验目的 1.基本学会弹出菜单的制作方法 2.进一步理解事件驱动程序设计 17.2实验内容与步骤 1.上机实验题一 在视图窗口上制作一个弹出式菜单,并包含3个子菜单,如图17-1所示。 ⑴分析 首先产生一个单文档视图应用程序框架,在视图上按下 按下鼠标右键时,弹出该菜单。为每一个菜单建立一个消息 处理程序。 ⑵步骤 ①用MFC产生一个单文档视图应用程序框架 设项目文件名为Menu。 图17-1 弹出菜单 ②产生一个弹出式菜单 在视图窗口上产生一个弹出式菜单的方法是在视图类中增加一个重载的OnInitialUpdate成员函数。进入ClassVizard,类名选CMenuView,Object IDs选CMenuView,Messages选OnInitialUpdate,双击该消息,则在Member functions中显示成员函数名OnInitialUpdate,双击该函数名,则显示该成员函数: void CMenuesView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class } 在视图类的定义中增加一个指向菜单对象的指针变量m_menu。新增加部分均作黑体字表示。 class CMenuesView : public CView { protected: // create from serialization only CMenuesView(); DECLARE_DYNCREATE(CMenuesView) // Attributes protected: CMenu *m_menu; //增加保护的数据成员 ...... } 调用菜单类的成员函数CreatePopupMenu,在OnInitialUpdate函数中产生一个弹出式菜单: void CMenuesView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class m_menu = new CMenu; m_menu-CreatePopupMenu(); } ③在产生的弹出式菜单中增加三个菜单项,菜单项名分别为“弹出菜单1”,“弹出菜单2”和“弹出菜单3”;指定它们的菜单ID分别为ID_POPUP1,ID_POPUP2,ID_POPUP3。由于在菜单ID与菜单名之间建立映射,为此要将这三个菜单ID加入资源符号表中。在View菜单中选择“Resource Symbols”子菜单,则弹出图17-2所示的对话框。 图17-2 资源符号表 单出对话框中的“New…”按钮,则弹出如图17-3所示的对话框。 图17-3 增加新的符号资源对话框 在Name中输入ID_POPUP1,Value取缺省值101,单击按“Ok” 按钮,系统产生一个符号名ID_POPUP1,用同样的方法产生资源符号名ID_POPUP2和ID_POPUP3。单击图17-2上的“Close”按钮,关闭该对话框。 使用菜单对象的成员函数AppendMenu将新的菜单项加入到弹出菜单中,这个成员函数的格式为: AppendMenu(UINT nFlags,UINT nIDNewItem,const Cbitmap *pBmp); 其中,nFlags为MF_CHECKED, MF_ENABLE, MF_POPUP, MF_SEPARATOR, MF_STRING等,MF_STRING为设置菜单名;nIDNewItem为菜单的ID,pBmp为指向菜单名的指针或是指向菜单位图的指针。在成员函数OnInitialUpdate中,使用该函数产生三个菜单项。 void CMenuView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class m_menu = new CMenu; m_menu-CreatePopupMenu(); CString item1(弹出菜单1); m_menu-AppendMenu(MF_STRING,ID_POPUP1,item1); CString item2

文档评论(0)

1亿VIP精品文档

相关文档