??????? 通常,在寫WINDOWS程序的時候我們會用 GetLastError()來獲得錯誤代號,進而想要知道具體出錯原因(文本描述),我們可以用 FormatMessage 函數來得到。
下面示例一段代碼。
?1
?2 /*
?3 利用FormatMessage函數得到錯誤代碼的文本顯示。而錯誤代號則可由GetLastError()獲得。(_WINDOWS)
?4 */
?5
?6
????DWORD nErrorNo =?GetLastError ( ); // 得到錯誤代碼
?7
????LPSTR?lpBuffer;????
?8
????FormatMessage (?FORMAT_MESSAGE_ALLOCATE_BUFFER?
|
?9
???????? FORMAT_MESSAGE_IGNORE_INSERTS?
|
10
????????FORMAT_MESSAGE_FROM_SYSTEM,
11
????????NULL,
12
????????nErrorNo, // 此乃錯誤代碼,通常在程序中可由 GetLastError()得之
13
????????LANG_NEUTRAL,
14
????????(LPTSTR)
&
lpBuffer,
15
????????
0
,
16
????????NULL?);
17
????CString strErrorCause?
=
?lpBuffer?
?
?_T(lpBuffer)?:?_T(
"
Sorry,?cannot?find?this?error?info.
"
);
18
????UpdateData (FALSE);
19
20
????
//
?Free?the?buffer.
21
????LocalFree (lpBuffer);

?2 /*
?3 利用FormatMessage函數得到錯誤代碼的文本顯示。而錯誤代號則可由GetLastError()獲得。(_WINDOWS)
?4 */
?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

我這里編譯了一個簡單的可執行程序供給有需要的朋友 [ 下載?]。
MD5: 50b4fd62cf3082a9a3131e0ca3a00a86? ErrorLookup.rar
截圖:
