wxWidgets初学者导引(3)——wxWidgets应用程序初体验

 

3 wxWidgets应用程序初体验

  本文中全部的体验,在Code::Blocks中进行。工具

  为了在Code::Blocks中编译运行C++写的wxWidgets程序,须要再作些设置。学习

  首先,须要在环境变量里添加一个wxWidgets根目录环境变量。设置方法相似于2.3中设置PATH变量的方法。在Win7中,右击桌面上的“计算机”图标,选菜单中的“属性”,在“系统属性”对话框中,完成以下图从1到5的一系列操做。新增的变量命名为wxwin,值为X:\wxWidgets-3.0.0。ui

   

  接下来的设置要在Code::Blocks中进行。spa

  打开Code::Blocks,选择菜单Settings->Global Variables…,在设置default下新创建一个wx变量,在Build-in fields:下,base中填入“${wxwin}”(wxwin是刚才设置好的一个变量),include中填入“${wxwin}\include”,lib中填入“${wxwin}\lib”,这些都是开发中须要用到的“环境”中的一部分。.net

   

 

3.1 由“空项目”创建和运行GUI应用程序

  下面将“白手起家”,由创建“空项目”开始,作一个简单的应用。程序改编自在线教程《wxWidgets tutorial》(http://zetcode.com/gui/wxwidgets/)的“First programs in wxWidgets”部分的第一个程序。这个教程,将做为建议学习方案中的主教程之一。debug

 

3.1.1 创建项目

  创建项目的过程是:设计

  (1)经过菜单“File”->“New”->“Project…”,选择“Empty project”建一个空项目调试

  

  (2)点击“go”按钮后,有一个欢迎界面,点击“next”,出现下图,填入项目名。我创建的项目名称为wxTest。code

   

  (3)点击“next”后,要求选择编译器及生成的目标文件类型,照下图选择blog

   

  (4)点击“Finish”后,将生成一个空项目,如图

   

  (5)点击菜单File->New->File...为项目新建一个源程序文件。在连续出现的几个对话框中,选择要增长的文件类型是“C/C++ source”(即源文件),再一个对话框中选择语言是“C++”。接着,在下图所示的对话框中,给出带完整路径的源文件名(本例中用main.cpp),注意将Debug复选框选中。

   

  (6)点击“Finish”后,将下面的源程序输入(或粘贴)到文件main.cpp中。

 

[cpp]  view plain  copy
 
 print?
  1. #include <wx/wx.h>  
  2. class Simple : public wxFrame  
  3. {  
  4. public:  
  5.     Simple(const wxString& title);  
  6. };  
  7.    
  8. Simple::Simple(const wxString& title)  
  9.    : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 150))  
  10. {  
  11.   Centre();  
  12. }  
  13.    
  14. class MyApp : public wxApp  
  15. {  
  16.   public:  
  17.     virtual bool OnInit();  
  18. };  
  19.    
  20. IMPLEMENT_APP(MyApp)  
  21.    
  22. bool MyApp::OnInit()  
  23. {  
  24.     Simple *simple = new Simple(wxT("Simple"));  
  25.     simple->Show(true);  
  26.     return true;  
  27. }  

 

  加入了源代码以后的项目以下图所示:

   

  能够暂时不考虑程序中的语句是什么意思。能完成运行程序的完整过程,是咱们当前的任务。能运行程序了,后面再看“门道”。

  下面将对这个项目进行编译,进而看到运行结果。

 

3.1.2 编译和运行项目

  选择菜单“Build”中的“Build”选项(或者工具栏中的相应按钮)对项目进行编译、链接。程序第一行即出现错误。错误提示是:

 

[plain]  view plain  copy
 
 print?
  1. fatal error: wx/wx.h: No such file or directory  

 

  也就是说,找不到要包含的头文件wx\wx.h。

  这须要设置“搜索路径”解决。选菜单Project->Build options...,在选项卡Search directories中,设置Compiler。经过“Add”增长目录X:\wxWidgets-3.0.0\lib\gcc_dll\mswud和X:\wxWidgets-3.0.0\include,结果以下图所示:

  

  接着Build,将再也不有语法错误。

  出现的一大堆错误提示,来自于链接环节,问题是找不到库文件。

  选菜单Project->Build options...,在选项卡Linker settings中,须要加入要链接的“目标文件”。如图所示,经过Add按钮加入X:\wxWidgets-3.0.0\lib\gcc_dll文件夹中的全部.a文件(实际上,选择其中几个须要的就能够了。由于不知道究竟须要哪几个,全选是最省事的办法):

  

  而后再编译,0 errors, 0 warnings。成功!

  可是运行程序时,会出现错误,以下图:

   

  按提示来,在X:\wxWidgets-3.0.0\lib\gcc_dll中找到wxmsw30ud_gcc_custom.dll文件,将其拷贝到项目所在文件夹,再运行,就看到了期盼的窗口,如图所示。

   

  出现上面的运行错误,缘由是我在Linker settings加入的是lib\gcc_dll文件夹中的.a文件,这些属于“动态连接库”(这个术语本身百度去吧)。这种方式的好处在于编译速度快,目标代码小,可是在编译好的程序运行时,必需要能找到须要的.dll文件。最简单的办法,就是拷贝.dll文件。

  这个程序很短,结果也只是一个空空的窗口,可是做为掌握编译、运行窗口程序的案例,却也是足够的了。

  以上的设置和文件复制,“有经验”以后能够提早完成。上面的描述方法,是考虑到但愿读者对各个环节的问题,能多些感受。

 

3.2 利用Code::Blocks的向导创建应用

  另外一种在Code::Blocks中创建wxWidgets Project的方法,是经过“向导”开发应用。这种方法用得不是不少,能够做为了解。

  本节下面的材料,非做者原创,整理自http://www.cnzui.com/archives/962

  利用向导开发的具体步骤是:

  (1)经过菜单“File”->“New”->“Project…”,选择最后面的wxWidgets project。

  

  (2)点击“Go”进入工程配置向导,首先会出来一个欢迎窗口,直接next后,选择安装好wxWidgets版本。

   

  注:Code::Blocks 13.12中,已经有了对wxWidgets 3.0.x的支持。须要选对版本,不然可以继续生成应用程序,可是不能正确链接和运行。

  (3)按“Next”,而后输入项目名“wxtest”,选择保存项目的文件夹。

  

  (4)继续“Next”,输入做者和及一些版权说明信息。

  

  (5)继续“Next”,选择GUI设计工具和程序类型,用wxSmith和Dialog based。

  

  (6)按“Next”,接下来的就是wxWidgets环境的一些设置了,这里咱们输入刚才设置的wxWidgets根目录,直接填入“$(#wx)”就能够了。

  

  (7)按“Next”,这里咱们看到默认就是选择了MinGW编译器了,下面的咱们只作Debug版本,因此只选上“Create “Debug” configuration”。

  

  (9)继续“Next”,接下来要选择怎么使用wxWidgets库,这里根据你编译的wxWidgets库是什么样的来。

  

后注:在wxWidgets Library Setting部分,三个勾都打上。这样,只要在编译时SHARED=1,知足了Use wxWidgets DLL,使用动态连接接库的要求;用MONOLITHIC=1,知足了wxWidgets is built as a monolithic library,构建单一库;而UNICODE=1,知足支持宽字符串Enable unicode。也就是说,当初编译wxWidgets时用:mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug和mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release,就能够知足生支供调试和发布的代码两项要求。

  (10)按“Next”,由于选择了“Configure Advanced Options”,因此要对使用wxWidgets库作更多的设置,这里咱们选上咱们使用lib方式调用(要求编译wxWidgets时用SHARED=0参数,生成了静态库文件)。

  

  (11)按“Next”进到最后一步,咱们选择须要用到的库,不知道的话所有选上。

  

  (12)点击“Finish”,工程随即创建成功。

  这时能够查看项目中自动生成的文件,其中有.cpp的源文件,也有.h的头文件。再细读,和3.1中输入的程序长得差很少。

  其实,向导的做用,就是经过一系列的选择,由向导程序自动生成应用程序。

  如上步骤建立的应用程序的运行的结果是:

  

  在编译和运行时,都有可能出现一些错误。这通常不是程序自己的问题,而是Code::Blocks的编译环境和运行的支持文件不全而形成的。

  请参阅3.1.2小节,可能会帮助你排除问题,让程序正确运行。

 

http://blog.csdn.net/sxhelijian/article/details/26164181

相关文章
相关标签/搜索