细述 wxWindows
2008-09-30 13:05:33 来源:WEB开发网Unicode 和国际化 (i18n)
开发适用于国际市场的软件时,不能指望每个人都能阅读以英文表示的应用程序消息。但广泛使用的 ANSI 代码又不能处理所有语言符号。(例如,它不能处理中文。)而同时编写 ANSI 和 Unicode 又有些复杂,您可以从下例中领略到这一点:
ANSI 和 Unicode
#ifdef USE__UNICODE
wchar_t wide_char = L'h';
wchar_t const* wide_string = L"Hello, World!";
int length = wcslen( wide_string );
#else
char ansi_char = 'h';
char const* ansi_string = "Hello, World!";
int length = strlen( ansi_string );
#endif
而使用 wxWindows Unicode 能力就只需要编写以下代码:
wxT() 宏以及 wxChar 和 wxString
wxChar wx_char = wxT( '*' );
wxString wx_string = wxT( "Hello, World!" );
int length = wx_string.Len();
wxT() 宏以及 wxChar 和 wxString 类将处理所有问题。该库在内部对所有消息使用这种方法。当前有捷克语、丹麦语、德语、法语、意大利语和俄语译文可用,但您可以在 wxLocale 类的帮助下编译库的本地化版本后使用它。
调试
库提供了各种不同的类、函数和宏来帮助您调试应用程序。如果以调试方式来编译库,用于类 wxObject (wxWindows 中大多数类的基类)的 new 和 delete 操作符就已经重新定义,可以存储有关在堆上分配的对象的额外信息。使用这些信息,可以用类 wxDebugContext 来获得有关对象分配、内存泄露、覆盖和正在写入的详细信息。
// Start logging for Dump() call
wxDebugContext::SetCheckpoint();
wxString *thing = new wxString;
wxDate* date = new wxDate;
// non-object allocation
char *ordinaryNonObject = new char[1000];
// more ...
// Print number of object and non-object allocations
wxDebugContext::Dump();
// Print allocation statistics
wxDebugContext::PrintStatistics();
更多精彩
赞助商链接