wxWidgets学习笔记--菜单

定义菜单

1、在项目中建立“menu.h”头文件和“menu.cpp”文件;

2、在menu.h头文件中定义一个wxMenuBar ,这个wxMenuBar 会在wxFrame中用到。

wxMenuBar *  CreateMenuBar();

3、在menu.cpp文件中实现CreateMenuBar()方法

wxMenuBar *  CreateMenuBar()
{
    
//  1) 定义一个 wxMenuBar  
    wxMenuBar *  menuBar  =   new  wxMenuBar();
    
    
//  2) File菜单项 
    wxMenu *  menuFile  =   new  wxMenu(wxT( "" ));
    
    
//  Open 菜单项 
    wxMenuItem *  menuItemOpen  =   new  wxMenuItem(menuFile,IDM_MENUITEM_OPEN,wxT( " Open " ),wxEmptyString, wxITEM_NORMAL);
    menuFile
-> Append(menuItemOpen);
    
    
//  插入菜单项的分隔符 
    menuFile -> AppendSeparator();
    
    
//  定义一个使用XPM图像资源的菜单项 
    wxMenuItem *  menuItemExit  =   new  wxMenuItem(menuFile,IDM_MENUITEM_EXIT,wxT( " Exit " ),wxEmptyString, wxITEM_NORMAL);    
    
//  设置XPM图片作为菜单项的图标,并追加到File菜单中 
    wxBitmap exitBMP(IDM_MENUITEM_EXIT_XPM);
    menuItemExit
-> SetBitmap(exitBMP);
    menuFile
-> Append(menuItemExit);
    
    
//  3)将File菜单项追加到MenuBar上 
    menuBar -> Append(menuFile,wxT( " File " ));    
    
    
//  Tools 菜单项 
    wxMenu *  menuTools  =   new  wxMenu(wxT( "" ));
    wxMenuItem
*  menuItemSettings  =   new  wxMenuItem(menuTools,IDM_MENUITEM_SETTINGS,wxT( " Settings " ),wxEmptyString,wxITEM_NORMAL);
    menuTools
-> Append(menuItemSettings);
    
    menuBar
-> Append(menuTools,wxT( " Tools " ));
    
    
return  menuBar;
}

4、在需要菜单的wxFrame中:

//  设置menubar 
SetMenuBar(CreateMenuBar());

       在创建菜单时,如果为菜单项指定图标,一般使用XPM资源作为图标,用工具XnView可以很方便的将jpg、png等格式的图片转换为XPM格式。在include这个XPM时,需要用记事本或其他例如Editplus等看一下XPM文件头部的定义是否和这个XPM的文件名一致,如果不一致,编译器会提示找不到这个XPM文件。

 

下面开始添加菜单的事件

 1、在应用菜单的wxFrame的头文件中定义一个public的事件:

void  OnSettings(wxCommandEvent &   event );

2、在cpp文件中实现它

void  MainFrm::OnSettings(wxCommandEvent &   event )
{
    wxMessageBox(wxT(
" this is settings " ),wxT( " title " ));
}

3、在应用菜单的wxFrame的事件表中定义:

EVT_MENU(IDM_MENUITEM_SETTINGS,                MainFrm::OnSettings)

到这里,这个菜单点击Tools---Settings,已经可以看到一个MessageBox了。菜单的内容不是很多,暂时到这里。

 

 

你可能感兴趣的:(wxwidgets)