wxWidgets工程配置

wxWidgets工程配置

// * 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 {
10public:
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了。。。

你可能感兴趣的:(wxWidgets工程配置)