敬业的IT人 >> 编程开发 >> 其他语言 >> 在VC6中创建wxWidgets项目[附图]

在VC6中创建wxWidgets项目[附图]

敬业的IT人 互联网 佚名 2008-1-4 13:45:51

在VC6中创建wxWidgets项目

原创:liigo

 

前言:wxWidgets 是跨平台的GUI库,用VC6会影响它的跨平台性吗?当然不会,我们只是用VC6充当编译器和编辑器,只要编写代码时注意不使用Windows相关的特性,写出的代码仍然是跨平台的,仍然是可以在其它操作系统下(如Linux)使用其它C++编译器(如GCC)编译并运行的。

为什么用VC6,而不是其它?我并没有说一定要用VC6,或只能用VC6,只不过此文专门针对VC6而已。过一段时间我可能会写一篇在Code::Blocks中使用wxWidgets的文章(可惜在Code::Blocks中创建wxWidgets工程太容易了,还有必要介绍吗?我只感觉到在linux下编译Code::Blocks本身的源代码有一些困难)。

 

关于wxWidgets

完整地介绍 wxWidgets 或全部列出其所有功能,是很困难的事情。我也不打算这么做。我只列一下我目前所知道的、能想起来的且比较在意的一些 wxWidgets 特性。

  • C++开发的跨平台的GUI库,开放源代码(类LGPL,允许在商业程序中使用)
  • 有十多年的历史,目前已经相当成熟、稳定
  • 支持多个平台(Windows/Windows CE,Linux,Unix/GTK+,Unix/Motif and X11,Mac OS,MGL,OS/2,Palm等)
  • 如果有可能,它总是采用操作系统本地界面(这一点与 EclipseSWT 类似,当然SWT是java的)
  • 有众多高质量的第三方组件/库
  • 可以在多种编程语言中使用wxWidgets,如C/C++,Java,Pythborder="0" alt="在VC6中创建wxWidgets项目[附图](图一)" />

    编译生成的 exe 文件的大小:

    可执行文件大小 Debug Release Unicode 3.78M 956K 非Unicode 3.60M 932K

    此数据全部是静态链接wxWidgets的结果。动态链接的话,EXE的大小没有意义——别忘了wxWidgets的版DLLs的大小总共约4到5M(Release版)。

     

    添加子控件

    向 wxFrame 或 wxDialog 中添加子控件是比较容易的,只需在其子类的构造函数中 new 相应的子控件就可以了。

    这是最简单的情况:

    如果界面再复杂一些,上面这种方法就行不通了,我们需要引入“Sizer”(详见(Sizer一览),此处不作深入解释):

    上述代码中涉及的控件ID(ID_TEXTCTRL,ID_BUTTborder="0" alt="在VC6中创建wxWidgets项目[附图](图四)" />

    在VC6中创建wxWidgets项目[附图](图五)

     

    如何处理其它事件?

    说白了,关键要知道两点:事件处理函数(方法)的参数是什么类型,填写参数表时用哪一个宏(EVT_*)。

    再补充一点:要知道“什么控件”在“什么时机”会触发“什么事件”。

    要知道这些,就需要对wxWidgets的事件处理有一个比较全面的了解。

    建议看一下wxWidgets官方文档中的这篇文章:(事件处理一览)

    尤其是其中的 Event macros summary(事件宏概要)一段。

    电子书《Cross-Platform GUI Programming with wxWidgets》附录9(Appendix I, 617页)中对事件处理时所涉及的事件类型(wxXXXEvent)和事件宏(EVT_*)有比较好的总结,建议看一下,最好打印出来放在手边,以便随时参考。

    本文所涉及的完整源代码可在此下载:

    了解 事件处理:

    了解 wxWidgets 提供了哪些控件,它们各自的属性、方法、事件,以及它们的用法。

    去 wxWidgets.org 上找第三方的控件/库:http://www.wxwidgets.org/contrib2.htm#classes

    去 wxWiki 上找第三方的控件/库:http://www.wxwidgets.org/wiki/index.php/Table_Of_Contents#Pages_about_classes.2C_functions_or_macros

    GUI库嘛?无非就是控件(component)的使用:布局、操作、事件处理。

     

    联系作者

    liigo@sina.com

    www.liigo.com

    http://blog.csdn.net/liigo/

    QQ: 175199125

     

    参考资料

    http://www.wxwidgets.org/

    http://www.wxwidgets.org/wiki/index.php/Main_Page

    进入讨论组讨论。
粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com