细述 wxWindows
2008-09-30 13:05:33 来源:WEB开发网以标准 C++ 编写进行的安全向下类型转换
class A {
virtual void foo() {};
};
class B : public A {};
A* p_A = new B();
B* p_B = dynamic_cast
( p_A );
如果有任何错误, p_B 将包含 0 指针。在 wxWindows 中,您将发现一个基于宏的系统用于运行时类型信息,但对于上述 C++ 代码,必须按以下方法使用 wxDynamicCast() 宏:
用于标准 C++ 的wxDynamicCast() 宏
B* p_B = wxDynamicCast( p_A, B );
如果类型转换失败, p_B 将包含 0 指针。对于支持新类型转换语法的实现,宏扩展为 dynamic_cast<> 。但不幸的是,宏只对指针起作用,而不对引用起作用。除了 wxDynamicCast() 宏以外,还有 wxStaticCast() 和 wxConstCast() 宏。
wxWindows 字符串类 wxString 提供了 90% 的标准字符串类方法。这里有些示例:
wxWindows' wxString
wxString s1 = "Hello, World!";
wxString s2 = "Hello";
s2.erase();
for ( size_t i = 0; i < s1.length(); ++i )
s2 += s1[i];
if ( s1.compare( s2 ) == 0 ) {
// Strings are equal
}
请注意,如果在这里将 wxString typedef 为 std::string ,就可以同时为 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 社区正在不断成长,因此在下一次将要开发多平台项目时请关注一下它。
所有提到的产品名都是其相应拥有者的 商标或注册商标。
更多精彩
赞助商链接