wxWidgets:入门
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:入门的更多相关文章
- wxWidgets:给窗口添加工具条
		请先看上一篇<wxWidgets入门>. 修改MyFrame.h: #ifndef MYFRAME_H #define MYFRAME_H #include <wx/wxprec.h ... 
- 2小时入门Robot Framework
		1.介绍 1.1.介绍Robot Robot Framework是一个基于关键字驱动的自动化测试框架.通过该框架,测试人员可使用python封装关键字,并在非代码环境下使用关键字构建可被执行的测试用例 ... 
- wxWidgets+wxSmith版电子词典
		课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序须要的相关 ... 
- wxWidgets的安装编译、相关配置、问题分析处理
		wxWidgets的安装编译.相关配置.问题分析处理 一.介绍部分 (win7 下的 GUI 效果图见 本篇文章的最后部分截图2张) wxWidgets是一个开源的跨平台的C++构架库(framewo ... 
- Python入门 —— 03GUI界面编程
		GUI(Graphical User Interface) 即图形用户接口,又称图形用户接口. 是指采用图形方式显示的计算机操作用户界面.GUI 是屏幕产品的视觉体验和互动操作部分. "你的 ... 
- 《Visual C++ 2010入门教程》系列三:关于C++的一些问题
		<Visual C++ 2010入门教程>系列三:关于C++的一些问题 这一回我自己都不知道应该写点什么好,或许今天的篇幅会比往常短很多.我说过,这不是C++的教程,因为我还没有那个能 ... 
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
		上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ... 
- ABP入门系列(1)——学习Abp框架之实操演练
		作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ... 
- Oracle分析函数入门
		一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ... 
随机推荐
- Awk 从入门到放弃(1)–学习笔记
			参考:朱双印博客 1. 将test文件中的内容打印出来:vmuser@vmuser-virtual-machine:~/panzidong/awk$ echo ddd > testvmuser@ ... 
- AE项目打包
			Holinz AE项目打包 打包详细信息:Setup Factory 7.0打包软件,VS2005+AE92下的Winform项目1.依赖项: Dot Net Framework20 AO ... 
- hibernate缓存清除(转)
			文章有点杂,这不是原文,谢谢贡献者 http://www.360doc.com/content/16/0413/16/32415095_550307388.shtml 一.hibernate一级缓存( ... 
- Cisco ASA(8.4)端口映射设定(ASDM)
			1.进入到Configuration→firewall→NAT Rules画面. 2.点“services”添加服务端口,此案例添加TCP 1443和UDP 1443端口映射 3.添加“Network ... 
- 这是一个专注于电脑技术、软件应用、互联网、嵌入式,电子技术行业等的原创IT博客
			http://www.choovin.com/ 这是一个专注于电脑技术.软件应用.互联网.嵌入式,电子技术行业等的原创IT博客 
- 想ACCESS数据库插入新的用户
			public string AddUserN = ""; //定义用户名字符串 public string paswrd1 = ""; //密码1 public ... 
- 升级 macOS Mojave 后部分软件 (如 VS Code) 字体变虚的解决方法
			目前有些朋友的设备可能还是“非 Retina” 显示器,那这样如果升级到 Mojave 后你会发现文字不清晰了,这是因为 Mojave 默认关闭了文字次像素渲染字体,你需要在终端里执行: defaul ... 
- [LeetCode&Python] Problem 807. Max Increase to Keep City Skyline
			In a 2 dimensional array grid, each value grid[i][j] represents the height of a building located the ... 
- 20155338 2016-2017-2 《Java程序设计》第8周学习总结
			20155338 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 一.日志 API简介 java++.util.logging包提供了日志功能相关类与接口,不 ... 
- BZOJ3052: [wc2013]糖果公园【树上带修莫队】
			Description Input Output Sample Input Sample Input Sample Output 84 131 27 84 HINT 思路 非常模板的树上带修莫队 真的 ... 
