3 wxWidgets应用程序初体验

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

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

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

  

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

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

  

3.1 由“空项目”建立和执行GUI应用程序

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

3.1.1 建立项目

  建立项目的过程是:

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

  

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

  

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

  

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

  

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

  

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

#include <wx/wx.h>
class Simple : public wxFrame
{
public:
Simple(const wxString& title);
}; Simple::Simple(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 150))
{
Centre();
} class MyApp : public wxApp
{
public:
virtual bool OnInit();
}; IMPLEMENT_APP(MyApp) bool MyApp::OnInit()
{
Simple *simple = new Simple(wxT("Simple"));
simple->Show(true);
return true;
}

  增加了源码之后的项目例如以下图所看到的:

  

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

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

3.1.2 编译和执行项目

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

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中,须要增加要连接的“目标文件”。如图所看到的,通过Addbutton增加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库是什么样的来。

  

  (10)按“Next”,由于选择了“Configure Advanced Options”,所以要对使用wxWidgets库做很多其它的设置,这里我们选上我们使用lib方式调用(要求编译wxWidgets时用SHARED=0參数,生成了静态库文件)。

  

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

  

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

  这时能够查看项目中自己主动生成的文件,当中有.cpp的源文件,也有.h的头文件。再细读,和3.1中输入的程序长得差点儿相同。

  事实上,向导的作用,就是通过一系列的选择,由向导程序自己主动生成应用程序。

  如上步骤创建的应用程序的执行的结果是:

  

  在编译和执行时,都有可能出现一些错误。这一般不是程序本身的问题,而是Code::Blocks的编译环境和执行的支持文件不全而造成的。

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

================= 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类文件夹(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====

wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验的更多相关文章

  1. wxWidgets刚開始学习的人导引(2)——下载、安装wxWidgets

    wxWidgets刚開始学习的人导引全目录   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wxS ...

  2. wxWidgets刚開始学习的人导引(4)——wxWidgets学习资料及利用方法指导

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...

  3. wxWidgets刚開始学习的人导引(1)——前言

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...

  4. wxWidgets刚開始学习的人导引(6)——wxWidgets学习材料清单

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...

  5. 刚開始学习的人制作VMOS场效应管小功放

    VMOS场效应管既有电子管的长处又有晶体管的长处,用它制作的功率放大器声音醇厚.甜美,动态范围大.频率响应好.因此近年来在音响设备中得到了广泛应用. 大功率的场效应管功率放大器.电.路比較复杂.制作和 ...

  6. 对于刚開始学习的人Xcode最经常使用的快捷键

    对于刚開始学习的人而言,好多人都是直接使用鼠标进行操作.差点儿非常少使用快捷键,从而再练习编程时比别人慢那么一点,今天就把刚開始学习的人最经常使用的几个快捷键给大家总结下,当然欢迎大家补充. (1)c ...

  7. 【React Native开发】React Native配置执行官方样例-刚開始学习的人的福音(8)

    ),React Native技术交流4群(458982758),请不要反复加群! 欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文 ...

  8. JavaScript 刚開始学习的人应知的 24 条最佳实践

    原文:24 JavaScript Best Practices for Beginners (注:阅读原文的时候没有注意公布日期,认为不错就翻译了,翻译到 JSON.parse 那一节认为有点不正确路 ...

  9. oracle刚開始学习的人经常使用操作100问

    oracle刚開始学习的人经常使用操作100问 1. Oracle安装完毕后的初始口令?   internal/oracle sys/change_on_install system/manager ...

随机推荐

  1. setTimeout()与setInterval()方法区别介绍

    计时器setTimeout()和setInterval()两个都是js的计时功能的函数两个有些区别,下面为大家简单介绍下,希望对大家有所帮助   计时器setTimeout()和setInterval ...

  2. sql server根据日期或者月份查询聚合数据

    /*****************************根据时间查询每天的数据***************************************/ @tm_start:开始时间 @tm ...

  3. MySQL忘记root密码的解决方案

    在实际操作中忘记MySQL的root密码是一件令人很头痛的事情,不要急以下的文章就是介绍MySQL的root密码忘记的时候解决方案,我们可以对其进行如下的步骤重新设置,以下就是文章的详细内容描述.   ...

  4. C#之重定向输入输出

    当我们写完程序,想要在另一个平台上跑我们所写的程序的时候,就需要用到重定向输入输出. 重定向有两中方式,即同步和异步. 下面来讲讲同步 代码: Process process = new Proces ...

  5. nat123 与微信公众号开发者测试账号配合调试

    由于公司本身是做互联网 电商行业的,微信也是一个大块,近期开始花费时间在整合,总结自己的经验,看看之前的实现是否有明显的问题. 花了点钱(8块钱)充值了nat123,进行了内网穿透.之前也有使用花生壳 ...

  6. python zip文件密码爆破

    #!/usr/bin/env # coding=UTF-8 import zipfile import threading import os import sys class CrackZip: d ...

  7. Ignatius and the Princess I

    算法:搜索+优先队列+(递归输出结果) The Princess has been abducted by the BEelzebub feng5166, our hero Ignatius has ...

  8. C++拾遗(七)函数相关(2)

    内联函数 内联函数与常规函数的区别在于: 1.常规函数:在执行调用指令时,先存储该指令的内存地址,将函数参数复制到堆栈,然后跳转到被调用函数起点的内存单元,执行函数,将返回值放 入寄存器,最后跳回到一 ...

  9. jquery 20行代码实现简单轮播效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. em px 简单换算

    大部分的网页设计者在CSS代码编写中总是先对整体定义字体尺寸,中文情况下一般为12px,而其实这样以来在通过IE顶部菜单中的“察看-文字大小”设置已无任何 作用.对字体感觉太小的浏览者而言无疑是种很不 ...