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了。菜单的内容不是很多,暂时到这里。

  • 相关阅读:
    go基础系列:结构struct
    梯度下降法解决线性回归
    梯度下降法解决线性回归
    梯度下降法解决线性回归
    【 Linux 】单台服务器上并发TCP连接数(转)
    【 Linux 】单台服务器上并发TCP连接数(转)
    【 Linux 】单台服务器上并发TCP连接数(转)
    axios在vue项目中的一种封装方法
    快速排序算法(C#实现)
    你必须知道的261个Java语言问题
  • 原文地址:https://www.cnblogs.com/ode/p/2143550.html
Copyright © 2011-2022 走看看