设置开发环境
在创建应用程序前,需要设置Visual Studio开发环境和WxWidgets的相关变量,具体包括:
- 包含目录:包含WxWidgets头文件。在项目“属性→配置属性→C++目录→包含目录”项中,添加C:\wxWidgets-3.0.2\include\msvc和C:\ wxWidgets-3.0.2\include。
- 库目录:包含WxWidgets库文件。在项目“属性→配置属性→C++目录→库目录”项中,添加C:\wxWidgets-3.0.2\lib\vc_dll。
- 系统环境变量:设置WxWidgets动态链接库文件目录。在Windows控制面板“系统→高级系统设置→高级→环境变量→系统变量”中,在Path变量的内容中增加C:\wxWidgets-3.0.2\lib\vc_dll。
- 预处理器定义:设置与Windows平台相关的WxWidgets宏,主要包括 _WXMSW_、WXUSINGDLL等。
- 在程序中包含程序所需的头文件。
其中,预处理器定义和包含程序所需头文件两个步骤可以通过创建一个头文件wxInc.h来集中解决,用户代码中只需包含该头文件即可。
/// wxInc.h
#ifndef _WX_INC_H_
#define _WX_INC_H_
#define __WXMSW__ /// 使用windows平台
#define WXUSINGDLL /// 使用动态链接库
#ifdef _DEBUG
#define __WXDEBUG__ /// 使用WxWidgets调试
#endif //_DEBUG
#include "wx/config.h"
#include "wx/wx.h" /// 使用WxWidgets通用功能和类
#include "wx/aui/aui.h" /// 使用AUI
#include "wx/artprov.h" /// 使用预定义的图标资源
#endif ///_WX_INC_H_
简单窗口程序
最简单的WxWidgets窗口程序需要2个类:
(1)wxApp类,代表了应用程序,负责消息循环。
(2)wxFrame,代表了窗口,处理各类窗口事件。
下面创建一个简单的窗口程序。程序运行效果如下图所示。
简单窗口程序创建步骤如下:
(1)从wxApp派生用户类MyApp。
wxApp采用了类似MFC的宏定义和处理机制,通过DECLARE_APP()和IMPLEMENT_APP()两个宏声明和定义程序全局变量(也就是程序的入口点)。
/// MyApp.h
#include "wxInc.h"
class MyApp : public wxApp
{
public:
virtual bool OnInit();
};
DECLARE_APP(MyApp)
如未声明DECLARE_APP()和IMPLEMENT(),则编译时会报错如下:
MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
(2)重载wxApp::OnInit函数,在该函数内新建和显示主窗口。
/// MyApp.cpp
#include "MyApp.h"
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
/// 1.创建窗口
wxFrame * mainWnd = new wxFrame(NULL, wxID_ANY, wxT("main window"));
/// 2.将窗口设置为程序主窗口
SetTopWindow(mainWnd);
/// 3.显示窗口。
mainWnd->Show(true);
return true;
}
上述程序的wxPython版本如下(简单明了):
/// MyApp1.py
import wx
if __name__ == "__main__":
app =