设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

wxWidgets GUI编程介绍

2014-8-15 09:58| 发布者: joejoe0332| 查看: 6301| 评论: 0|原作者: 无若, htfy96, 徐继开, 0x0bject, 嘉言懿行|来自: oschina

摘要: wxWidgets 是C++的跨平台开发框架。它由 Julian Smart 于1992年在爱丁堡大学人工智能应用研究院发起的,自那之后,该框架分发到了众多平台之上。本文旨在引导初学者安装所需资源并以Code::Blocks作为IDE使用wxWidget ...

导论

  wxWidgets 是C++的跨平台开发框架。它由 Julian Smart 于1992年在爱丁堡大学人工智能应用研究院发起的,自那之后,该框架分发到了众多平台之上。

  本文旨在引导初学者安装所需资源并以Code::Blocks作为IDE使用wxWidgets开发一个单应用程序。


什么是wxWidgets

  wxWidgets 是一系列C++库,它遵循多平台GUI开发框架的设计规则。它有类似于MFC易于使用的API。把它和特定的库链接并编译,可是你的应用程序与目标平台的 界面相似。wxWidgets 是一个非常完整的框架,它几乎为你任何需求提供解决方案,并简化使用习惯。


为什么是wxWidgets

  对于跨平台GUI开发有很多可选的选项。可能最流行的是Java,但是对于许多应用程序而言这不是一个有效率的选择。在C++中有QT,一个非常不 错的框架,但是它也有许多不足之处,第一点,它是仿平台外观的,而wxWidgets使用平台库创建图形接口;第二点,在你写的代码与最终被编译的C++ 代码之间,QT采用了一种与众不同的方式去使用一个专属的层。这里不提及微软的可视化框架,它只能工作在windows上,与它类似还有 mono.net,它是搭建在层上的层。


  与之相反的例子wxWidgets是C++的,它是高效的,并且不用在你的代码上添加额外的层。它是一个类库的集合,因此你可以使用C++编译器去编译它,不是说每一种C++编译器都可以,但是大多数通用的都可以。


  其他的优势和特点:


  • 它一直在被开发,还有很多支持,更是协作的开放源代码社区。

  • 它完全免费,无论是私人用途还是商业用途。

  • 有大量的在线文档。

  • 容易学习,它就是C++。

  • 有很多现成的类和库,参看这里


开始

  让我们开始工作吧. 首先我们需要框架本身和IDE让我们可以开始开发。然后我们可以做些魔术,把“hello,world“打到我们的屏幕上。


安装

  我会展示windows环境的安装步骤,其他操作系统也类似。我使用Code::Blocks作为IDE因为它和wxWidgets结合的很好,并且它对windows和linux都有免费的稳定版本。


1. 下载和安装Code::Blocks

  你可以从它自己的官网网址【http://www.codeblocks.org/downloads/26】去下载二进制版本,我建议你下载最新 的mingw的稳定版本呢,现在最稳定版本是codeblocks-13.12mingw-setup,它会自带mingw编译器。下载并且安装,就像其 他经典的windows安装程序一样。或许你需要把 mingw/bin写到环境变量PATH中,如果有人不知道怎么做,我可以增加更详细的步骤。


2. 下载,安装和编译wxWidgets

  你可以从wxWidgets的存储库中下载wxWidgets资源。下载wxMSW安装器或者ZIP,因为安装程序就是一个压缩文件夹。下载稳定的realease 2.8.12版本,因为它是最兼容Code::Block的分支。

  如果你已经下载安装器或者ZIP文件,就把它安装或者解压到C:\目录下。然后在标准的windows控制台上打开命令行shell(cmd),更改wxWidgets的生成目录。

  关键是去编译wxWidgets的时候,使用一样的编译器,你会在稍后开发的时候使用到。如果你已经安装了Code::Block IDE和mingw,并且添加路径(mingw/bin)到环境变量中,这样你就不会有任何问题。

1
cd <wxwidgets>\build\msw

<wxwidgets>是你提取资源的路径(典型的是 C:\wxWidgets-2.8.12)。

你必须执行生成命令,gcc编译器可以像这样输入:

1
mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1 CXXFLAGS=-fno-keep-inline-dllexport

  花点时间去看看编译的变量,这样你就可以选择更适合你的需要变量选项:

  BUILD:wxWidget的生成类型。在大多数情况下你会使用‘release’选项,因为你不会去调试wxWidgets本身。你可以调试你自己的程序链接到一个release版本的wxWidgets。


  SHARED: 这个变量定义了链接类型: 动态链接 (SHARED=1)下你必须把所需要的DLL和你的程序一同发布,而在静态链接(SHARED=0)下你只需要发布你的程序本身。动态链接下生成的程序体积更小,但你需要相应的DLL才能运行它。


  MONOLITHIC: 控制编译生成一个DLL(MONOLITHIC=1)还是多个DLL(MONOLITHIC=0)。当monolithic开关打开时,开发更加简单,你 只需要在发布你的程序时携带一个DLL;然而monolithic开关关闭时,链接过程会更有效率,因为这样避免了链接整个wxWidget代码库。


  UNICODE: 定义wxWidget和你的程序是使用宽字符字符串(UNICODE=1)还是ANSI(UNICODE=0)。强烈建议使用wxWidget的 _("string") 和 _T("string") 宏来确保你的硬编码字符串格式正确。


  现在,wxWidgets已经编译完毕,那么就让我们开始写几个以它为框架的程序吧。


新建工程

1.首先启动Code::Blocks,点击“创建新工程”


2.在项目选择窗口中选择wxWidget


3.现在你需要选择wxWidgets版本。请确保选择你当前安装的版本。本教程中,请选择2.8.x



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部