wxWidgets学习笔记--菜单

定义菜单

 
1、在项目中建立“menu.h”头文件和“menu.cpp”文件;
2、在menu.h头文件中定义一个wxMenuBar ,这个wxMenuBar 会在wxFrame中用到。
 
  
  
  
  
  1. wxMenuBar* CreateMenuBar(); 
3、在menu.cpp文件中实现CreateMenuBar()方法
 
  
  
  
  
  1. wxMenuBar* CreateMenuBar() 
  2.     // 1) 定义一个 wxMenuBar   
  3.     wxMenuBar* menuBar = new wxMenuBar(); 
  4.      
  5.     // 2) File菜单项  
  6.     wxMenu* menuFile = new wxMenu(wxT("")); 
  7.      
  8.     // Open 菜单项  
  9.     wxMenuItem* menuItemOpen = new wxMenuItem(menuFile,IDM_MENUITEM_OPEN,wxT("Open"),wxEmptyString, wxITEM_NORMAL); 
  10.     menuFile->Append(menuItemOpen); 
  11.      
  12.     // 插入菜单项的分隔符  
  13.     menuFile->AppendSeparator(); 
  14.      
  15.     // 定义一个使用XPM图像资源的菜单项  
  16.     wxMenuItem* menuItemExit = new wxMenuItem(menuFile,IDM_MENUITEM_EXIT,wxT("Exit"),wxEmptyString, wxITEM_NORMAL);     
  17.     // 设置XPM图片作为菜单项的图标,并追加到File菜单中  
  18.     wxBitmap exitBMP(IDM_MENUITEM_EXIT_XPM); 
  19.     menuItemExit->SetBitmap(exitBMP); 
  20.     menuFile->Append(menuItemExit); 
  21.      
  22.     // 3)将File菜单项追加到MenuBar上  
  23.     menuBar->Append(menuFile,wxT("File"));     
  24.      
  25.     // Tools 菜单项  
  26.     wxMenu* menuTools = new wxMenu(wxT("")); 
  27.     wxMenuItem* menuItemSettings = new wxMenuItem(menuTools,IDM_MENUITEM_SETTINGS,wxT("Settings"),wxEmptyString,wxITEM_NORMAL); 
  28.     menuTools->Append(menuItemSettings); 
  29.      
  30.     menuBar->Append(menuTools,wxT("Tools")); 
  31.      
  32.     return menuBar; 
4、在需要菜单的wxFrame中:
 
  
  
  
  
  1. // 设置menubar  
  2. SetMenuBar(CreateMenuBar()); 
在创建菜单时,如果为菜单项指定图标,一般使用XPM资源作为图标,用工具XnView可以很方便的将jpg、png等格式的图片转换为XPM格式。在include这个XPM时,需要用记事本或其他例如Editplus等看一下XPM文件头部的定义是否和这个XPM的文件名一致,如果不一致,编译器会提示找不到这个XPM文件。
 
下面开始添加菜单的事件
 1、在应用菜单的wxFrame的头文件中定义一个public的事件:
 
  
  
  
  
  1. void OnSettings(wxCommandEvent& event); 
2、在cpp文件中实现它
 
  
  
  
  
  1. void MainFrm::OnSettings(wxCommandEvent& event) 
  2.     wxMessageBox(wxT("this is settings"),wxT("title")); 
3、在应用菜单的wxFrame的事件表中定义:
 
  
  
  
  
  1. EVT_MENU(IDM_MENUITEM_SETTINGS,                MainFrm::OnSettings) 
到这里,这个菜单点击Tools---Settings,已经可以看到一个MessageBox了。菜单的内容不是很多,暂时到这里。

作者:vincent zhang
出处:http://ode.cnblogs.com http://odevincent.blog.51cto.com
Email:wsaspx#hotmail.com
知识共享许可协议
本作品由vincent zhang创作,采用知识共享署名-非商业性使用-禁止演绎 3.0 中国大陆许可协议进行许可。

你可能感兴趣的:(C++,wxwidgets)