美文网首页
c/c++: vs2017创建wxwidgets项目

c/c++: vs2017创建wxwidgets项目

作者: 极光火狐狸 | 来源:发表于2018-12-18 18:50 被阅读44次

    下载

    wxwidgets-3.0.4

    安装

    1. 双击wxMSW-3.0.4-Setup.exe.exe安装文件
    2. 路径选择 C:\wxWidgets-3.0.4

    vs2017打开wxwidgets项目

    1. 双击打开 C:\wxWidgets-3.0.4\build\mswwx_vc12.sln 项目解决方案文件.
    2. 导航栏 -> 生成 -> 批生成 -> 全选 -> 点击生成按钮.(等编译所有组件: 半小时)

    vs2017创建一个空项目

    1. 导航栏 -> 文件 -> 新建 -> 项目 -> 空项目.
    2. 创建一个空的simple.cpp文件
    3. 导航栏 -> 项目 -> 属性.
    4. C/C++ -> 常规 -> 附加包含目录
      4.1 添加 C:\wxWidgets-3.0.4\include
      4.2 添加 C:\wxWidgets-3.0.4\lib\vc_lib\mswud
      4.3 添加 C:\wxWidgets-3.0.4\samples
    5. C/C++ -> 生成代码 -> 运行库 -> 多线程DLL(/MD)
    6. C/C++ -> 语言 -> 符合模式 -> 选否.
    7. 链接器 -> 常规 -> 附加库目录: C:\wxWidgets-3.0.4\lib\vc_lib;%(AdditionalLibraryDirectories)
    8. 链接器 -> 输入 -> 附加依赖项: wxmsw30u_core.lib;wxbase30u.lib;wxtiff.lib;wxjpeg.lib;wxpng.lib;wxzlib.lib;wxregexu.lib;wxexpat.lib;kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)

    样例代码

    simple.cpp

    /////////////////////////////////////////////////////////////////////////////
    // Name:        minimal.cpp
    // Purpose:     Minimal wxWidgets sample
    // Author:      Julian Smart
    // Modified by:
    // Created:     04/01/98
    // RCS-ID:      $Id$
    // Copyright:   (c) Julian Smart
    // Licence:     wxWindows licence
    /////////////////////////////////////////////////////////////////////////////
    
    // ============================================================================
    // declarations
    // ============================================================================
    
    // ----------------------------------------------------------------------------
    // headers
    // ----------------------------------------------------------------------------
    
    // For compilers that support precompilation, includes "wx/wx.h".
    #include "wx/wxprec.h"
    
    #ifdef __BORLANDC__
    #pragma hdrstop
    #endif
    
    // for all others, include the necessary headers (this file is usually all you
    // need because it includes almost all "standard" wxWidgets headers)
    #ifndef WX_PRECOMP
    #include "wx/wx.h"
    #endif
    
    // ----------------------------------------------------------------------------
    // resources
    // ----------------------------------------------------------------------------
    
    // the application icon (under Windows and OS/2 it is in resources and even
    // though we could still include the XPM here it would be unused)
    #ifndef wxHAS_IMAGES_IN_RESOURCES
    #include "../sample.xpm"
    #endif
    
    // ----------------------------------------------------------------------------
    // private classes
    // ----------------------------------------------------------------------------
    
    // Define a new application type, each program should derive a class from wxApp
    class MyApp : public wxApp
    {
    public:
        // override base class virtuals
        // ----------------------------
    
        // this one is called on application startup and is a good place for the app
        // initialization (doing it here and not in the ctor allows to have an error
        // return: if OnInit() returns false, the application terminates)
        virtual bool OnInit();
    };
    
    // Define a new frame type: this is going to be our main frame
    class MyFrame : public wxFrame
    {
    public:
        // ctor(s)
        MyFrame(const wxString& title);
    
        // event handlers (these functions should _not_ be virtual)
        void OnQuit(wxCommandEvent& event);
        void OnAbout(wxCommandEvent& event);
    
    private:
        // any class wishing to process wxWidgets events must use this macro
        wxDECLARE_EVENT_TABLE();
    };
    
    // ----------------------------------------------------------------------------
    // constants
    // ----------------------------------------------------------------------------
    
    // IDs for the controls and the menu commands
    enum
    {
        // menu items
        Minimal_Quit = wxID_EXIT,
    
        // it is important for the id corresponding to the "About" command to have
        // this standard value as otherwise it won't be handled properly under Mac
        // (where it is special and put into the "Apple" menu)
        Minimal_About = wxID_ABOUT
    };
    
    // ----------------------------------------------------------------------------
    // event tables and other macros for wxWidgets
    // ----------------------------------------------------------------------------
    
    // the event tables connect the wxWidgets events with the functions (event
    // handlers) which process them. It can be also done at run-time, but for the
    // simple menu events like this the static method is much simpler.
    wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
    EVT_MENU(Minimal_Quit, MyFrame::OnQuit)
    EVT_MENU(Minimal_About, MyFrame::OnAbout)
    wxEND_EVENT_TABLE()
    
    // Create a new application object: this macro will allow wxWidgets to create
    // the application object during program execution (it's better than using a
    // static object for many reasons) and also implements the accessor function
    // wxGetApp() which will return the reference of the right type (i.e. MyApp and
    // not wxApp)
    IMPLEMENT_APP(MyApp)
    
    // ============================================================================
    // implementation
    // ============================================================================
    
    // ----------------------------------------------------------------------------
    // the application class
    // ----------------------------------------------------------------------------
    
    // 'Main program' equivalent: the program execution "starts" here
    bool MyApp::OnInit()
    {
        // call the base class initialization method, currently it only parses a
        // few common command-line options but it could be do more in the future
        if (!wxApp::OnInit())
            return false;
    
        // create the main application window
        MyFrame *frame = new MyFrame("Minimal wxWidgets App");
    
        // and show it (the frames, unlike simple controls, are not shown when
        // created initially)
        frame->Show(true);
    
        // success: wxApp::OnRun() will be called which will enter the main message
        // loop and the application will run. If we returned false here, the
        // application would exit immediately.
        return true;
    }
    
    // ----------------------------------------------------------------------------
    // main frame
    // ----------------------------------------------------------------------------
    
    // frame constructor
    MyFrame::MyFrame(const wxString& title)
        : wxFrame(NULL, wxID_ANY, title)
    {
        // set the frame icon
        SetIcon(wxICON(sample));
    
    #if wxUSE_MENUS
        // create a menu bar
        wxMenu *fileMenu = new wxMenu;
    
        // the "About" item should be in the help menu
        wxMenu *helpMenu = new wxMenu;
        helpMenu->Append(Minimal_About, "&About\tF1", "Show about dialog");
    
        fileMenu->Append(Minimal_Quit, "E&xit\tAlt-X", "Quit this program");
    
        // now append the freshly created menu to the menu bar...
        wxMenuBar *menuBar = new wxMenuBar();
        menuBar->Append(fileMenu, "&File");
        menuBar->Append(helpMenu, "&Help");
    
        // ... and attach this menu bar to the frame
        SetMenuBar(menuBar);
    #endif // wxUSE_MENUS
    
    #if wxUSE_STATUSBAR
        // create a status bar just for fun (by default with 1 pane only)
        CreateStatusBar(2);
        SetStatusText("Welcome to wxWidgets!");
    #endif // wxUSE_STATUSBAR
    }
    
    
    // event handlers
    
    void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
    {
        // true is to force the frame to close
        Close(true);
    }
    
    void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
    {
        wxMessageBox(wxString::Format
        (
            "Welcome to %s!\n"
            "\n"
            "This is the minimal wxWidgets sample\n"
            "running under %s.",
            wxVERSION_STRING,
            wxGetOsDescription()
        ),
            "About wxWidgets minimal sample",
            wxOK | wxICON_INFORMATION,
            this);
    }
    
    

    运行效果

    QQ图片20181218185023.png

    相关文章

      网友评论

          本文标题:c/c++: vs2017创建wxwidgets项目

          本文链接:https://www.haomeiwen.com/subject/hvolkqtx.html