读Windows核心编程

读Windows核心编程

ID:41032906

大小:87.00 KB

页数:19页

时间:2019-08-14

读Windows核心编程_第1页
读Windows核心编程_第2页
读Windows核心编程_第3页
读Windows核心编程_第4页
读Windows核心编程_第5页
资源描述:

《读Windows核心编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、读Windows核心编程-1收藏当调用一个Windows函数失败,可以用DWORDGetLastError();返回该线程的32位错误代码。WinError.h头文件中包含了Microsoft公司定义的错误代码列表。每一个错误代码包含消息ID(ERROR_PATH_NOT_FOUND),消息文本和一个号码(0L、1L)三部分。当Windows函数运行失败时,应该立即调用GetLastError函数,如果调用了另一个Windows函数,返回值可能被修改。从系统内部来说,当一个Windows函数检测到一个错误时,它会使

2、用一个称为线程本地存储器的机制,将相应的错误代码号码与调用的线程关联起来。(线程本地存储器在21章中描述)在vc6.0中,可以在watch窗口中输入@err,hr得到错误代码的英文描述,当Windows函数调用失败时不需要调用GetLastError即可在watch窗口中看见相应的错误描述。还可以利用FormatMessage函数将错误代码转化为文本描述,在创建向用户显示的字符串信息时,它是首选函数。也可以定义自己的错误代码,用VOIDSetLastError(DWORDdwErrCode)实现。错误代码是个32位

3、的数字,可以划分为五个域。这些域在24章中详细讲述。^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^读Windows核心编程-2收藏Microsoft对Unicode的支持:Windows98:只支持ANSIWindows2000:即支持Unicode也支持ANSI,但是用Unicode会更快,因为会有一个内部的转化过程,比如调用CreateWindowEx函数,参数传非Unicode字符串,那么CreateWindowEx必须分配内存(进程的默认堆中),将非Unicode字符转化成Unic

4、ode字符,然后在传给CreateWindowEx。影响效率。WindowsCE:只支持UnicodeCOM:只支持UnicodeC运行时库对Unicode的支持:在标准C头文件String.h中定义:typedefunsignedshortwchar_t;对应strcat、strcpy、strlen这样的函数都有一组对应的Unicode版本:wcscat、wcscpy、wcslen对于包含了对str函数和wcs函数进行显示调用的代码来说,无法非常容易的同时为ANSI和Unicode对这些代码进行编译。若要建立双重

5、功能,必须包含头文件TChar.h,而不是String.h。TChar.h中定义了很多宏,比如_tcscpy,如果定义了_UNICODE这个宏就调用wcscpy,如果没有定义就调用strcpy函数。另外TChar.h中还定义了:定义了_UNICODE:typedefwchar_tTCHAR;define_TEXT(x)L##x没有定义_UNICODE:typedefcharTCHAR;define_TEXT(x)x这样,无论有没有定义_UNICODE,都可以这么用:TCHAR*szError=_TEXT("Erro

6、r");通过这种方法,只需通过_UNICODE就可以分别编译出ANSI和Unicode版本。另外:_T("")等同于_TEXT("")。Windows头文件定义的数据类型:WCHAR:Unicode字符串PWSTR:指向Unicode字符串的指针PCWSTR:指向一个恒定的Unicode字符串的指针Windows也定义了ANSI/Unicode通过数据类型PTSTR和PCTSTR,这些数据类型可以指ANSI字符串,也可以指Unicode字符串,取决于是否定义了UNICODE宏。(这里没有下划线,跟C运行时库不同)W

7、indows提供的函数通常包含两个版本:比如CreateWindowExA和CreateWindowExW,还有一个宏CreateWindowEx,调用哪里取决于是否定义了UNICODE。而在Windows2000下,因为没有ANSI版本,CreateWindowExA其实做了从ANSI版本到Unicode版本的转化工作。要创建给其他开发人员使用的DLL时可以考虑提供两个版本的输出函数:ANSI版本和Unicode版本。在ANSI版本中就进行简单的字符串转化,在调用Unicode版本。WindowsAPI中一些函数

8、仅仅为了实现与16位Windows的兼容,像WinExec和OpenFile,应该用CreateProcess和CreateFile代替。Windows还提供了一组操作字符串的函数:StrCat、StrChr、StrCmp、StrCpy...这些函数同样支持ANSI和UNICODE版本,取决于是否定义了UNICODE宏,书上建议使用这些函数代替C运行期字符串

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。