0. 介绍

wxWidgets是一个开源的跨平台的C++构架库(framework),它可以提供GUI和其它工具。目前的3.0.0版本支持所有版本的Windows、带GTK+或Motif的Unix和MacOS。wxWidgets在不同平台上使用Native API完成GUI相关工作,所以性能和最终App的体积都比Qt好很多。经过十多年的发展,其稳定性、兼容性和相关文档都已日臻完善。在前几年其开发文档曾遭受诟病,但最新的3.0.0所带文档已相当完整。

1. 下载

下载地址:http://www.wxwidgets.org/downloads/

此处我们下载Windows安装版。

2. 编译

安装完成后,使用VS20xx打开安装目录下的build/msw/xxx.sln文件。建议把每个configuration都build一次。

注:据文档称,如果一次编译不能全部通过,可能是子项目编译顺序引起的问题,只要再编译一到两次就可以了。在我的VS2012上一次编译通过。

3. 编译完成后,让我们来做一个带窗口的最小程序。

新建一个vc++空项目;

添加五个文件:

MyFrame.cpp MyFrame.h  (窗口Frame类,继承于wxFrame,将被MyApp实例化)

MyApp.cpp MyApp.h (应用程序类,继承于wxApp,在OnInit成员函数中实例化MyFrame,将被main.cpp实例化)

main.cpp (主文件,实例化MyApp)

4. 工程包含目录中添加wxWidget安装目录下的include和include/msw

5. 工程lib目录附加wxWidget安装目录下的lib/vc_lib

6. 增加预处理_UNICODE

7. MyFrame.h

#ifndef MYFRAME_H
#define MYFRAME_H #include <wx/wx.h> class MyFrame : public wxFrame
{
public:
MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
}; #endif // MYFRAME_H

8. MyFrame.cpp

#include "MyFrame.h"

// 代码想当简短,只是调用基类构造函数
MyFrame :: MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
: wxFrame(NULL, wxID_ANY, title, pos, size)
{
}

9. MyApp.h

#ifndef MYAPP_H
#define MYAPP_H #include <wx/wx.h> class MyApp : public wxApp
{
public:
// 我们需要重新实现基类虚函数
virtual bool OnInit();
}; #endif // MYAPP_H

10. MyApp.cpp

#include "MyApp.h"
#include "MyFrame.h" bool MyApp :: OnInit()
{
// 实例化窗口框架类
MyFrame *myFrame = new MyFrame("MyApp", wxDefaultPosition, wxDefaultSize);
myFrame->Show();
return true;
}

11. main.cpp

#include <wx/wx.h>

#include "MyApp.h"
#include "MyFrame.h" // 核心代码只需一行
wxIMPLEMENT_APP(MyApp);

12. 没什么问题的话,编译会顺利完成,运行后显示一个空窗口。

13. 附加说明:wxApp::OnInit()相当于main函数,可以把它看作整个程序的入口。

14. 结语

早期的wxWidgets编程风格类似于MFC,其消息处理使用DECLARE_EVENT/BEGIN_EVENT_TABLE/END_EVENT_TABLE实现。新的wxWidgets可以像Qt的connect函数那样,使用bind函数完成消息和处理函数的动态绑定。应该说,wxWidgets正走在逐渐完美的路上。

wxWidgets:入门的更多相关文章

  1. wxWidgets:给窗口添加工具条

    请先看上一篇<wxWidgets入门>. 修改MyFrame.h: #ifndef MYFRAME_H #define MYFRAME_H #include <wx/wxprec.h ...

  2. 2小时入门Robot Framework

    1.介绍 1.1.介绍Robot Robot Framework是一个基于关键字驱动的自动化测试框架.通过该框架,测试人员可使用python封装关键字,并在非代码环境下使用关键字构建可被执行的测试用例 ...

  3. wxWidgets+wxSmith版电子词典

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序须要的相关 ...

  4. wxWidgets的安装编译、相关配置、问题分析处理

    wxWidgets的安装编译.相关配置.问题分析处理 一.介绍部分 (win7 下的 GUI 效果图见 本篇文章的最后部分截图2张) wxWidgets是一个开源的跨平台的C++构架库(framewo ...

  5. Python入门 —— 03GUI界面编程

    GUI(Graphical User Interface) 即图形用户接口,又称图形用户接口. 是指采用图形方式显示的计算机操作用户界面.GUI 是屏幕产品的视觉体验和互动操作部分. "你的 ...

  6. 《Visual C++ 2010入门教程》系列三:关于C++的一些问题

    <Visual C++ 2010入门教程>系列三:关于C++的一些问题   这一回我自己都不知道应该写点什么好,或许今天的篇幅会比往常短很多.我说过,这不是C++的教程,因为我还没有那个能 ...

  7. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  8. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  9. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

随机推荐

  1. .Net在线编辑器:KindEditor及CkEditor+CkFinder配置说明

    Net在线编辑器:KindEditor及CkEditor+CkFinder配置说明 一.KindEditor(免费) KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所 ...

  2. Saiku_学习_01_saiku安装与运行

    一.下载saiku 1.下载地址 官网:https://community.meteorite.bi/ 2.解压后文件结构 3.ROOT和saiku 在tomcat/webapp 下有两个web应用, ...

  3. web项目中的路径问题

    “/”表示根路径 1.“/”代表的意思不是固定的,是要根据具体的方法,才能知道在该方法中"/"所代表的含义,同样相对路径也不是固定的,需要根据具体的方法来判断具体是相对哪个路径的相 ...

  4. 《Python》 代码块、小数据池和编码转换

    一.代码块 Python程序是由代码块构造的.块是一个python程序的文本,他是作为一个单元执行的. 什么是代码块:一个py文件,一个函数,一个文件,一个类都是一个代码块. 作为交互方式输入的每一行 ...

  5. 关于const的一些注意事项

    1.const对象必须初始化,一旦创建其值就无法更改 2.默认情况下,const对象仅在文件内有效,若想在多个文件中使用同一个const对象,就是不在每个文件独立的定义一个const对象,可以进行如下 ...

  6. L1-001 Hello World

    这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句“Hello World!”就可以了. 输入样例: 无 输出样例: Hello World! #include<stdio.h> ...

  7. 1.学习dubbo

    1.安装虚拟机 http://www.cnblogs.com/yun965861480/p/6246396.html 2.配置网络 http://www.cnblogs.com/yun96586148 ...

  8. SharePoint Infopath表单服务-PowerShell

    1. 激活可浏览的表单模板 Set-SPInfoPathFormsService -AllowUserFormBrowserEnabling $true -AllowUserFormBrowserRe ...

  9. Gradle 下载不了

    可自行下载对应的 gradle-x.x-all.zip 放在下列目录 C:\Users\penno\.gradle\wrapper\dists\gradle-4.4-all\9br9xq1tocpiv ...

  10. python编码问题 decode与encode

    参考: http://www.jb51.net/article/17560.htm 如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCI ...