zoukankan      html  css  js  c++  java
  • [原创]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了。菜单的内容不是很多,暂时到这里。

  • 相关阅读:
    8.10
    今日头条笔试题 1~n的每个数,按字典序排完序后,第m个数是什么?
    Gym 100500B Conference Room(最小表示法,哈希)
    CodeForces 438D The Child and Sequence(线段树)
    UVALIVE 6905 Two Yachts(最小费用最大流)
    Gym Conference Room (最小表示法,哈希)
    hdu 2389 Rain on your Parade(二分图HK算法)
    Codeforces Fox And Dinner(最大流)
    zoj 3367 Counterfeit Money(dp)
    ZOJ3370. Radio Waves(2-sat)
  • 原文地址:https://www.cnblogs.com/ode/p/2143550.html
Copyright © 2011-2022 走看看