// * create by zyzx
// * 2009-3-11
// * 轉(zhuǎn)載請(qǐng)注明來(lái)源:http://m.shnenglu.com/zyzx
wx庫(kù)編譯相對(duì)簡(jiǎn)單些,配置起來(lái)說(shuō)難也不算很難,但比較麻煩。有比較多的地方需要注意。在其wiki上面有比較多的篇幅講解如何使用vs來(lái)配置工程,但熟悉起來(lái)還是需要一段時(shí)間。
wiki上的配置向?qū)В?a >http://wiki.wxwidgets.org/Guides_%26_Tutorials
依照上一篇編譯說(shuō)明將wx庫(kù)編譯好了,建立了目錄庫(kù)。
我們?cè)僭O(shè)置如下編譯環(huán)境。
Win32平臺(tái)配置
VC配置屬性:
常規(guī):
MFC的使用:使用標(biāo)準(zhǔn)Windows庫(kù)
C/C++:
常規(guī):附加包含目錄:..\wxlib\include ..\wxlib\debug\mswud
預(yù)處理器:WIN32;_DEBUG;__WXMSW__;__WXDEBUG__;_WINDOWS;WXUSINGDLL
代碼生成:運(yùn)行時(shí)庫(kù):MDD
鏈接器:
常規(guī):附加庫(kù)目錄:..\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
系統(tǒng):子系統(tǒng):未設(shè)置、Windows (/SUBSYSTEM:WINDOWS)
高級(jí):入口點(diǎn):無(wú)
WXUSINGDLL標(biāo)簽表明wx是用動(dòng)態(tài)庫(kù)的方式引入。MFC庫(kù)是否引入,看個(gè)人的需求,基本上使用wx是不再用MFC的。
附加庫(kù)中嘗試時(shí)可以將所有的..\wxlib\*.lib加入進(jìn)來(lái),然后分別根據(jù)使用情況分別剔除某些lib文件。
關(guān)于運(yùn)行時(shí)庫(kù),最好要和編譯wx庫(kù)保持一致(這里默認(rèn)MDD),不然可能出現(xiàn)編譯錯(cuò)誤。
最后運(yùn)行成果時(shí),別忘了把*.dll文件也拷貝到可執(zhí)行程序文件夾中去。
WinCE平臺(tái)設(shè)置
VC配置屬性:
常規(guī):
MFC的使用:使用標(biāo)準(zhǔn)Windows庫(kù)
C/C++:
常規(guī):附加包含目錄:..\wxCELib\include ..\wxCELib\debug\winced
預(yù)處理器定義:_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);
WINCE;DEBUG;_WINDOWS;$(ARCHFAM);$(_ARCHFAM_);
_UNICODE;UNICODE;__WXWINCE__;NOPCH;wxNO_EXCEPTIONS
代碼生成:MTD
鏈接器:
附加庫(kù)目錄:..\wxCELib\debug
輸入:wx_mono.lib wx_wxexpat.lib wx_wxjpeg.lib wx_wxpng.lib wx_wxzlib.lib wcelibcex.lib
命令行:附加選項(xiàng): /subsystem:windowsce,4.20 /machine:ARM /ARMPADCODE
系統(tǒng):子系統(tǒng):未設(shè)置
高級(jí):入口點(diǎn):無(wú)
wcelibcex.lib是補(bǔ)全部分WinCE上SDK缺失的部分函數(shù)庫(kù),搜索wcelibcex(下載)字樣,即可找到相應(yīng)的1.0源代碼,編譯后添加到我們自己的開發(fā)庫(kù)目錄下。
編程時(shí)注意在WinCE上很多窗口特性,并不完全與Win32環(huán)境相同。包括窗口的組織結(jié)構(gòu)都有細(xì)微的差別。
并不是所有wx庫(kù)窗口組件都兼容到WinCE,但基礎(chǔ)常用的組件還是沒有多大的問(wèn)題的。
好了,有了這些,就可以嘗試最經(jīng)典的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上運(yùn)行是有些問(wèn)題的,CreateStatusBar()也是不能再WinCE上運(yùn)行,或許不久會(huì)解決這些問(wèn)題。不過(guò),基礎(chǔ)的wxMenu、wxWindow卻是可以的,有這些組建復(fù)雜的界面也不難。
呵呵,,如果通過(guò)編譯并正確運(yùn)行,,。。。^V^,,,就OK了。。。