专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Python » wxwindows:细述 wxWindows »正文

wxwindows:细述 wxWindows

来源: 发布时间:星期四, 2009年1月8日 浏览:8次 评论:0
  wxWindows 库无论是否作为动态链接库 (DLL) 来编译它都有可能有非常小执行体它还提供了用于多平台开发各种特性:可以获得 OpenGL 接口以及对 HTML、Unicode 和国际化内建支持它可以帮助您将应用从仅用于 Windows MFC(Microsoft Foundation Classes)移植到其它平台比方说LinuxwxWindows 个主要目是在尽可能多平台上运行这样才能支持几乎每种可用 C 编译器它还没有使用标准 C 全部特性(例如名称空间、std:: 类和 STL 容器)但标准 C 已被列在日程中并且已经有了些对于新类型转换语法和 std:: 支持

  简要历史

  Julian Smart 于 1992 年在爱丁堡大学 (University of Edinburgh) 人工智能应用学院开始了 wxWindows 研究1995 年Markus Holzem 发布了其到 Xt(X 工具箱) wxWindows 移植停了段时间后1997 年 5 月Windows 和 GTK+ 移植被合并并放入 CVS 资源库所有对 wxWindows 做出贡献人都可以使用它到 97 年底Julian Smart 开始分发 wxWindows CD-ROM包括完整源码、编译器材料等等

  目前 wxWindows 在 GPL 下发布但有个例外:可以分发不带有源代码 2进制可执行文件这对于商业项目来说是个不错选择它有各种 UNIX 版 和 Microsoft Windows 版以及 Macosh OS 版到 OS/2 和其它操作系统移植也正在开发中现在让我们开始进入具有丰富内容正文...

  要运用平台

   wxWindows 随时可以使用本机Control控件所以它采取和大多数其它多平台 GUI 库区别方式来对待小窗口部件可以仿效那些不可用Control控件例如 Unix 下树Control控件这将为应用用户提供类似外观和感觉wxWindows 库当前支持以下平台:

  Windows 3.1Windows 95/98Windows NT

  带有 Mot/Lesst 大多数 UNIX 版本

  带有 GTK+ 大多数 UNIX 版本

  Mac

  仅带非 GUI 类 wxBase 库也可以在 UNIX/Win32 和 BeOS 下构建(有些限制)即使您不是将 wxWindows 作为 DLL 编译也可以获得非常小可执行文件例如使用 Windows 平台 Microsoft Visual C 所编译最小样本应用小于 400 KB wxWindows 可执行很小所以通常可以避免所谓“DLL 灾难”

  现在让我们看看多平台特性...

  独立于体系结构类型

  为避免体系结构依赖性该库提供了各种独立于体系结构类型和宏能够根据应用尾数来处理位交换它们包括:

  wxInt32(32 位有符号整数)

  wxInt16(16 位有符号整数)

  wxInt8(8 位有符号整数)

  wxU32(32 位无符号整数)

  wxU16 = wxWord(16 位无符号整数)

  wxU8 = wxByte(8 位无符号整数)

  位交换宏可用于整数和无符号整数(其中 xx 代表 16 或 32BE 代表大尾数法LE 代表小尾数法)

  wxINTxx_SWAP_ON_BE

  wxUINTxx_SWAP_ON_BE

  wxINTxx_SWAP_ON_LE

  wxUINTxx_SWAP_ON_LE

  wxINTxx_SWAP_ALWAYS

  wxUINTxx_SWAP_ALWAYS

  这里使用方法很直接如下例所示:

  32 位带符号整数变量字节交换

wxInt32 old_var = 0xF1F2F3F4;
wxInt32 _var = wxINT32_SWAP_ALWAYS( old_var )


  除了这些宏以外wxWindows 还提供了 # 来定义机器(库在其上编译)当前尾数以下是它例:

  使用 #

( wxBYTE_ORDER wxLITTLE_ENDIAN )
{
  // Do stuff for little endian machine...
}

{
  // Do stuff for big endian machine...
}


  文件处理

  要为具有区别文件存储器概念区别平台进行编写总是很困难要克服这问题wxWindows 有用于多平台文件处理首先让我们看些用于基本文件操作(例如复制、删除和重命名)

  基本文件操作

wxString old_report = "smithers_00.doc"
wxString _report = "my_smithers.doc";
( wxCopyFile( old_report, "smithers_00.bak" ) true )
{
   ( wxRemoveFile( old_report ) true )
  {
     ( wxRenameFile( _report, old_report ) false )
    {
      // Doh!
    }
  }
}


  另个为区别平台进行编写所带来严重问题是目录分隔但使用 wxPathList 类话就可以完全避免这问题 wxPathList 包含了搜索文件所用目录列表如果希望查找某文件只需要将文件名传递给 wxPathList 类它就会搜索预先定义目录

  wxPathList 类

wxPathList path_list;
// Add current working directory
path_list.Add( "." );
// Add _disibledevent= 0 ) {
  // Strings are equal
}


  请注意如果在这里将 wxString typedef 为 std:: 就可以同时为 wxWindows 和标准 C 编写

  文档

  wxWindows 文档就目前来说点也不出色虽然些比较“陈旧”类(例如 wxString )文档很齐全但对最近实现类(例如 wxGrid )或更模糊类(例如 wxGLCanvas )描述本应该做得更好主要文档提供了对库及其概念快速介绍、按照字母顺序排列类引用、编程策略、主题概述以及对 wxHTML 和 wxPython 某些注释提供了 HTML、WinHelp、MS HTML Help 和 PDF 格式(请参阅 参考资料)



  如果您刚刚接触 wxWindows应该从主题概述开始它们提供了许多有关公共主题(例如调试、事件处理、打印等等)基本信息和代码举例主要文档还包含了些技术介绍说明和教程它们提供主题信息范围从有关了解 wxWindows 些非常公共问题到特定于编译器问题您还将得到大量纯文本文件包含用于所支持平台安装和发行介绍说明wxWindows 发行版还提供了随文档大约 50 个样本应用

  支持

  如果您在使用库时遇到问题在文档中又找不到答案该如何办?不用担心通常您有两种支持可选:使用邮件列表免费支持或商业支持如果您不幸需要快速解答可能最好使用商业支持虽然核心开发者总是会关注邮件列表但他们往往很忙碌无法立即做出响应但您通常可以在两天内得到答案(如果提问题不太寻常或比较复杂则在再次提出问题的前应该至少等上两天)可以从 Sourceforge(请参阅 参考资料 )上 CVS 源代码数据库访问最新源码

  整理总结

  现在您对 wxWindows 究竟是什么它为多平台开发提供了哪些产品和服务应该有了定认识但当然这些不是全部拿当前 wxStudio 项目为例它使用 wxWindows 开发类似于 IDE Microsoft Visual Studio或者 wxCVS 项目它将是用于 CVS 系统多平台图形界面或者 wxDesigner它是由 Robert Roebling 开发种 RAD 工具用于构建 wxWindows 对话框您应该会发现wxWindows 社区正在不断成长因此在下次将要开发多平台项目时请关注下它

  所有提到产品名都是其相应拥有者 商标或注册商标



标签:wxwindows
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: