VS2017-wxWidgets : 搭建Win10-VS2017的wxWidgets开发环境(32位/x86)

Visual Studio 版本:15.8.1
wxWidgets 版本: 3.1.1

  • Step 1. File -> New -> Project -> Windows Destop Application
    创建默认的Windows窗口应用,自动生成$app.cpp文件,$app为创建工程的Name
  • Step 2. 拷贝下述代码,覆盖Step 1生成的cpp文件
  • Step 3. Project -> $app Proterties -> C/C++ -> Precompiled Headers -> Precomplied Header
    修改为Not Using Precompiled Headers,关闭stdafx.h预编译头文件
  • Step 4. Project -> $app Proterties -> C/C++ -> Additional Include Directories
    增加$wxWidgetsPath\include $wxWidgetsPath为安装wxWidgets的根目录路径
  • Step 5. Project -> $app Proterties -> Linker -> General -> Additional Library Directories
    增加$wxWidgetsPath\lib\vc_lib
  • Step 6. Project -> $app Proterties -> Linker -> Input -> Additional Dependencies
    按照实际依赖需求,增加lib文件,本教程添加如下(部分可能为冗余lib文件)

    wxmsw31ud_adv.lib wxmsw31ud_core.lib wxbase31ud.lib
    wxbase31ud_net.lib wxmsw31ud_html.lib wxbase31ud_xml.lib
    wxmsw31ud_aui.lib wxmsw31ud_gl.lib wxmsw31ud_media.lib
    wxmsw31ud_propgrid.lib wxmsw31ud_qa.lib wxmsw31ud_ribbon.lib
    wxmsw31ud_richtext.lib wxmsw31ud_stc.lib wxmsw31ud_xrc.lib
    wxscintillad.lib wxtiffd.lib wxjpegd.lib wxpngd.lib
    wxzlibd.lib wxexpatd.lib winmm.lib comctl32.lib rpcrt4.lib
    wsock32.lib odbc32.lib

上述配置可以选定VS2017配置为Debug或Release,具体应用Build时候选择相应的配置模式即可。切记要选择wxWidgets编译时候相应的系统位数(32位),即VS2017的x86。64位(x64)暂未成功
配置完毕以后,可以成功Build或Debug,并看到wxWidgets的Hello World程序。

成功编译的截图:

VS2017-wxWidgets : 搭建Win10-VS2017的wxWidgets开发环境(32位/x86)_第1张图片

wxWidgets: 官方“Hello World"教程

#include     // 预编译头文件
#ifndef WX_PRECOMP
#include 
#endif

// 声明当前应用
class MyApp : public wxApp
{
public:
    virtual bool OnInit();
};

// 当前应用的主框架以及事件句柄
class MyFrame : public wxFrame
{
public:
    MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
private:
    void OnHello(wxCommandEvent& event);
    void OnExit(wxCommandEvent& event);
    void OnAbout(wxCommandEvent& event);
    wxDECLARE_EVENT_TABLE();
};

// 事件标识符
enum
{
    ID_Hello = 1
};

// 定义事件表
wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(ID_Hello, MyFrame::OnHello)
EVT_MENU(wxID_EXIT, MyFrame::OnExit)
EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
wxEND_EVENT_TABLE()

// 应用的入口
wxIMPLEMENT_APP(MyApp);

// 应用的Init事件句柄
bool MyApp::OnInit()
{
    MyFrame *frame = new MyFrame("Hello World", wxPoint(50, 50), wxSize(450, 340));
    frame->Show(true);
    return true;
}

// 主框架的初始化
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
    : wxFrame(NULL, wxID_ANY, title, pos, size)
{
    wxMenu *menuFile = new wxMenu;
    menuFile->Append(ID_Hello, "&Hello...\tCtrl-H",
        "Help string shown in status bar for this menu item");
    menuFile->AppendSeparator();
    menuFile->Append(wxID_EXIT);
    wxMenu *menuHelp = new wxMenu;
    menuHelp->Append(wxID_ABOUT);
    wxMenuBar *menuBar = new wxMenuBar;
    menuBar->Append(menuFile, "&File");
    menuBar->Append(menuHelp, "&Help");
    SetMenuBar(menuBar);
    CreateStatusBar();
    SetStatusText("Welcome to wxWidgets!");
}

// Exit事件句柄
void MyFrame::OnExit(wxCommandEvent& event)
{
    Close(true);
}

// About事件句柄
void MyFrame::OnAbout(wxCommandEvent& event)
{
    wxMessageBox("This is a wxWidgets' Hello world sample",
        "About Hello World", wxOK | wxICON_INFORMATION);
}

// Hello事件句柄
void MyFrame::OnHello(wxCommandEvent& event)
{
    wxLogMessage("Hello world from wxWidgets!");
}

你可能感兴趣的:(vs2017,wxwidget应用)