设为首页 加入收藏

TOP

Unicode简介(十六)
2010-12-30 21:07:57 】 浏览:18625
Tags:Unicode 简介
ows并不处理MessageBox呼叫。程式.EXE档案中的表格,允许Windows将该程式的呼叫与USER中的MessageBox函式动态连结起来。

32位的Windows(即所有版本的Windows NT,以及Windows 95和Windows 98)除了含有与16位相容的USER.EXE以外,还含有一个称为USER32.DLL的动态连结程式库,该动态连结程式库含有32位元使用者介面函式的进入点,包括32位元的MessageBox。

这就是Windows支援Unicode的关键:在USER32.DLL中,没有32位元MessageBox函式的进入点。实际上,有两个进入点,一个名为MessageBoxA(ASCII版),另一个名为MessageBoxW(宽字元版)。用字串作参数的每个Win32函式都在作业系统中有两个进入点!幸运的是,您通常不必关心这个问题,程式中只需使用MessageBox。与TCHAR表头档案一样,每个Windows表头档案都有我们需要的技巧。

下面是MessageBoxA在WINUSER.H中定义的方法。这与MessageBox早期的定义很相似:

WINUSERAPI int WINAPI MessageBoxA ( HWND hWnd, LPCSTR lpText,
LPCSTR lpCaption, UINT uType) ;

下面是MessageBoxW:

WINUSERAPI int WINAPI MessageBoxW (HWND hWnd, LPCWSTR lpText,
LPCWSTR lpCaption, UINT uType) ;

注意,MessageBoxW函式的第二个和第三个参数是指向宽字元的指标。

如果需要同时使用并分别匹配ASCII和宽字元函式呼叫,那么您可在Windows程式中明确地使用MessageBoxA和MessageBoxW函式。但大多数程式写作者将继续使用MessageBox。根据是否定义了UNICODE,MessageBox将与MessageBoxA或MessageBoxW一样。在WINUSER.H中完成这一技巧时,程式相当琐碎:

#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif

这样,如果定义了UNIC

首页 上一页 13 14 15 16 17 18 19 下一页 尾页 16/21/21
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇视窗和讯息 下一篇没有了

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目