《Windows核心编程》读书笔记.docx
文本预览下载声明
第一部分程序员必读Szq整理使用第1章对程序错误的处理????? ? (1)常见的Windows函数的返回类型:VOID: 无返回值型,该函数的运行不可能失败。Windows函数很少此类型BOOL:函数运行失败则返回0,否则返回非0HANDLE:失败则返回NULL,否则返回一个可操作的对象的Handle。?注:有些函数会返回一个句柄值INVALID_HANDLE_VALUE,?它被定义为-1。函数的Platform? SDK文档将会清楚地说明该函数运行失败时返回的是NULL还是INVALID_HANDLE_VALIDPVOID :函数运行失败,则返回值是NULL,否则返回PVOID,以标识数据块的内存地址LONG/DWORD: 这是个难以处理的值。返回数量的函数通常返LONGDWORD。如果由于某种原因,函数无??? 法对想要进行计数的对象进行计数,那么该函数通常返回0或-1(根据函数而定)。如果调用的函数返回了LONG/DWORD,那么请认真阅读 Platform SDK文档以确保能正确?检查潜在的错误。??????? (2)当某Windows函数运行错误时,可以通过调用 DWORD GetLast Error()函数获取调用该函数的关联线程的32位错误代码。其具体的错误文本以列表形式存放于WinError.h头文件中,在VC中调试时,也可以 通过在Watch窗口键入“@err,hr”来获取所调用函数的运行错误代码和具体的错误文本。??????? (3)Windows还提供了一个函数,可以将错误代码转换成它的文本描述。该函数称为FormatMessage,该函数的格式如下:??????? ?DWORD FormatMessage(??????????? ?DWORD dwFlags,??????????? ?LPCVOID pSource,??????????? ?DWORD dwMessageID,??????????? ?DWORD dwLanguageID,??????????? ?PTSTR pszBuffer,??????????? ?DWORD nSize,???????????? ?va_list *Argument????????????? ?);?????????????????????? 2004年11月8号Trackback: /TrackBack.aspx?PostId=174570第一章 程序员必读?1.1定义自己的错误代码??????? 若你编写了一个希望其他人调用的函数,你的函数可能因为这样或那样的原因而运行失败,你必须向函数的调用者说明它已经运行失败。若要指明函数运行失败,只 需要设定线程的最后的错误代码,然后让你的函数返回FALSE、INVALID_HANDLE_VALUE、NULL或者返回任何合适的信息。可以用 Viod SetLastError(DWORD dwErrCode)设定线程的最后错误代码;1.2 ErrorShow示例小程序??? FormatMessage函数的用法??? //获取错误代码??? DWORD dwError = GetDlgItemInt(hwnd , IDC_ERRORCODE , NULL , FALSE);??? ??? HLOCAL hlocal = NULL ; //创建存放错误文本的缓冲区并初始化;??? //获取错误代码的文字描述??? BOOL fOK = ForMatMessage(?????????? FORMAT_MASSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,?????????? NULL , dwError , MAKELANGID(LANG_ENGLISH , SUBLANG_ENGLISH_US),?????????? (LPTSTR) hlocal , 0 , NULL);??? ...........??? if (hloca != NULL)??? {?????? SetDlgItemText(hwnd , IDC_ERRORTEXT , (PCTSTR) LocalLock(hlocal) );?????? LocalFree(hlocal);??? }??? else??? {?????? SetDlgItemText(hwnd , IDC_ERRORTEXT , TEXT(Error number not found) );??? }??????? 当调用FormatMessage函数时,传递了FORMAT_MESSAGE_FROM_SYSTEM标志。该标志告诉FormatMessage函 数,我们想要系统定义的错误代码的字符串。还传递FORMAT_MESSA
显示全部