// * create by zyzx
// * 2009-3-11
// * 转载请注明来源:http://www.cppblog.com/zyzx
wx库编译相对简单些,配置起来说难也不算很难,但比较麻烦。有比较多的地方需要注意。在其wiki上面有比较多的篇幅讲解如何使用vs来配置工程,但熟悉起来还是需要一段时间。
wiki上的配置向导:http://wiki.wxwidgets.org/Guides_%26_Tutorials
依照上一篇编译说明将wx库编译好了,建立了目录库。
我们再设置如下编译环境。
Win32平台配置
VC配置属性:
常规:
MFC的使用:使用标准Windows库
C/C++:
常规:附加包含目录:..\wxlib\include ..\wxlib\debug\mswud
预处理器:WIN32;_DEBUG;__WXMSW__;__WXDEBUG__;_WINDOWS;WXUSINGDLL
代码生成:运行时库:MDD
链接器:
常规:附加库目录:..\wxlib\debug
输入:wxbase28ud.lib wxmsw28ud_core.lib wxmsw28ud_xrc.lib wxbase28ud_xml.lib wxmsw28ud_adv.lib wxmsw28ud_aui.lib wxmsw28ud_html.lib rpcrt4.lib winmm.lib comctl32.lib advapi32.lib oleacc.lib
系统:子系统:未设置、Windows (/SUBSYSTEM:WINDOWS)
高级:入口点:无
WXUSINGDLL标签表明wx是用动态库的方式引入。MFC库是否引入,看个人的需求,基本上使用wx是不再用MFC的。
附加库中尝试时可以将所有的..\wxlib\*.lib加入进来,然后分别根据使用情况分别剔除某些lib文件。
关于运行时库,最好要和编译wx库保持一致(这里默认MDD),不然可能出现编译错误。
最后运行成果时,别忘了把*.dll文件也拷贝到可执行程序文件夹中去。
WinCE平台设置
VC配置属性:
常规:
MFC的使用:使用标准Windows库
C/C++:
常规:附加包含目录:..\wxCELib\include ..\wxCELib\debug\winced
预处理器定义:_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);
WINCE;DEBUG;_WINDOWS;$(ARCHFAM);$(_ARCHFAM_);
_UNICODE;UNICODE;__WXWINCE__;NOPCH;wxNO_EXCEPTIONS
代码生成:MTD
链接器:
附加库目录:..\wxCELib\debug
输入:wx_mono.lib wx_wxexpat.lib wx_wxjpeg.lib wx_wxpng.lib wx_wxzlib.lib wcelibcex.lib
命令行:附加选项: /subsystem:windowsce,4.20 /machine:ARM /ARMPADCODE
系统:子系统:未设置
高级:入口点:无
wcelibcex.lib是补全部分WinCE上SDK缺失的部分函数库,搜索wcelibcex(下载)字样,即可找到相应的1.0源代码,编译后添加到我们自己的开发库目录下。
编程时注意在WinCE上很多窗口特性,并不完全与Win32环境相同。包括窗口的组织结构都有细微的差别。
并不是所有wx库窗口组件都兼容到WinCE,但基础常用的组件还是没有多大的问题的。
好了,有了这些,就可以尝试最经典的wx程序了。
1
#include "wx/wx.h"
2
using namespace std;
3
class MyApp:public wxApp
4

{
5
public:
6
vrtual bool OnInit();
7
};
8
class MyFrame:public wxFrame
9

{
10
public:
11
MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) ;
12
13
void OnQuit(wxCommandEvent& event);
14
void OnAbout(wxCommandEvent& event);
15
16
DECLARE_EVENT_TABLE()
17
};
18
enum
19

{
20
ID_Quit = 1,
21
ID_About,
22
};
23
24
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
25
EVT_MENU(ID_Quit, MyFrame::OnQuit)
26
EVT_MENU(ID_About, MyFrame::OnAbout)
27
END_EVENT_TABLE()
28
29
IMPLEMENT_APP(MyApp)
30
31
bool MyApp::OnInit()
32

{
33
MyFrame *frame = new MyFrame( wxT("Hello World"), wxPoint(50,50), wxSize(450,340) ) ;
34
frame->Show(TRUE);
35
SetTopWindow(frame);
36
return TRUE;
37
}
38
39
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
40
: wxFrame((wxFrame *)NULL, -1, title, pos, size)
41

{
42
#ifndef _WIN32_WCE
43
wxMenu *menuFile = new wxMenu;
44
45
menuFile->Append( ID_About, wxT("&About
") ) ;
46
menuFile->AppendSeparator();
47
menuFile->Append( ID_Quit, wxT("E&xit") ) ;
48
49
wxMenuBar *menuBar = new wxMenuBar;
50
menuBar->Append( menuFile, wxT("&File") ) ;
51
52
SetMenuBar( menuBar ) ;
53
54
CreateStatusBar();
55
SetStatusText( wxT("Welcome to wxWindows!") ) ;
56
#enif
57
}
58
59
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
60

{
61
Close(TRUE);
62
}
63
64
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
65

{
66
wxMessageBox(wxT("This is a wxWindows Hello world sample"),
67
wxT("About Hello World"), wxOK | wxICON_INFORMATION, this) ;
68
}
很遗憾wxMenuBar在WinCE上运行是有些问题的,CreateStatusBar()也是不能再WinCE上运行,或许不久会解决这些问题。不过,基础的wxMenu、wxWindow却是可以的,有这些组建复杂的界面也不难。
呵呵,,如果通过编译并正确运行,,。。。^V^,,,就OK了。。。