青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

子彈 の VISIONS

NEVER back down ~~

C++博客 首頁 新隨筆 聯系 聚合 管理
  112 Posts :: 34 Stories :: 99 Comments :: 0 Trackbacks

??????? 通常,在寫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);

我這里編譯了一個簡單的可執行程序供給有需要的朋友 [ 下載?]。
MD5: 50b4fd62cf3082a9a3131e0ca3a00a86? ErrorLookup.rar
截圖:
posted on 2006-05-24 16:18 子彈のVISIONS 閱讀(15301) 評論(4)  編輯 收藏 引用

Feedback

# 《Win32多線程程序設計》上的一個應用 2006-05-31 12:50 子彈


/*
* MtVerify.h
*
* Error handling for applications in
* "Multitheading Applications in Win32"
*
* The function PrintError() is marked as __inline so that it can be
* included from one or more C or C++ files without multiple definition
* errors. For the examples in this book, this works fine.
* To use the PrintError() in an application, it should be taken out,
* placed in its own source file, and the "__inline" declaration removed
* so the function will be globally available.
*/

#pragma comment( lib, "USER32" )

#include
#define MTASSERT(a) _ASSERTE(a)


#define MTVERIFY(a) if (!(a)) PrintError(#a,__FILE__, __LINE__, GetLastError())

__inline void PrintError(LPSTR linedesc, LPSTR filename, int lineno, DWORD errnum)
{
LPSTR lpBuffer;
char errbuf[256];
#ifdef _WINDOWS
char modulename[MAX_PATH];
#else // _WINDOWS
DWORD numread;
#endif // _WINDOWS

FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER
| FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
errnum,
LANG_NEUTRAL,
(LPTSTR)&lpBuffer,
0,
NULL );

wsprintf(errbuf, "\nThe following call failed at line %d in %s:\n\n"
" %s\n\nReason: %s\n", lineno, filename, linedesc, lpBuffer);
#ifndef _WINDOWS
WriteFile(GetStdHandle(STD_ERROR_HANDLE), errbuf, strlen(errbuf), &numread, FALSE );
Sleep(3000);
#else
GetModuleFileName(NULL, modulename, MAX_PATH);
MessageBox(NULL, errbuf, modulename, MB_ICONWARNING|MB_OK|MB_TASKMODAL|MB_SETFOREGROUND);
#endif
exit(EXIT_FAILURE);
}

說明:其中輸出到stderr和MessageBox部分可以把錯誤信息Log到文件或者其他存儲中,以備分析錯誤記錄。

MTVERIFY宏的使用前提是:產生的錯誤可以由GetLastError()捕捉。
  回復  更多評論
  

# re: GetLastError與FormatMessage聯用得到出錯原因 2008-02-28 18:15 匿名
3Q  回復  更多評論
  

# re: GetLastError與FormatMessage聯用得到出錯原因 2009-05-02 14:34 calm
lpBuffer:是一個指針
但在使用時 用( LPTSTR )&buffer,不就是變成指針的地址,也就是指針的指針了 這是什么原因?   回復  更多評論
  

# re: GetLastError與FormatMessage聯用得到出錯原因 2009-07-04 11:26 路過
@calm
因為這個API是傳值,所以需要把指針的地址傳過去,這樣這個指針才能被API內部修改,指向他申請的內存空間。
  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美不卡高清| 亚洲一区视频在线观看视频| 国产精品区一区二区三区| 免费在线成人av| 国产欧亚日韩视频| 一本色道久久综合狠狠躁篇的优点 | 久久这里只精品最新地址| 欧美国产日韩视频| 久久福利一区| 国产精品伦一区| 99re66热这里只有精品3直播| 亚洲第一黄网| 久久精品水蜜桃av综合天堂| 午夜精品福利在线| 欧美性开放视频| 日韩视频一区二区三区在线播放免费观看 | 国产一区二区按摩在线观看| 亚洲精品乱码久久久久久| 国产精品久久久爽爽爽麻豆色哟哟| 91久久精品视频| 亚洲精品视频在线看| 免费视频亚洲| 亚洲国产91| 亚洲精品久久久久久久久久久久久 | 亚洲精品久久在线| 亚洲欧洲三级电影| 久久亚洲精选| 欧美二区在线观看| 亚洲福利国产精品| 欧美成人午夜| 亚洲黄色免费| 99re成人精品视频| 欧美色欧美亚洲另类二区 | 亚洲欧美日韩在线| 欧美一区二区三区四区高清 | 国产区日韩欧美| 久久国产欧美日韩精品| 另类图片国产| 国产主播一区二区三区四区| 亚洲第一综合天堂另类专| 91久久久久久| 在线视频精品一区| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲一区二区三区中文字幕在线| 久久国产精品一区二区| 在线观看日韩av先锋影音电影院| 免费观看一区| 一区二区三区免费观看| 久久精品成人一区二区三区蜜臀| 黄色av日韩| 欧美日韩岛国| 午夜精品福利一区二区蜜股av| 久久中文字幕一区| 亚洲免费av电影| 国产精品激情偷乱一区二区∴| 欧美专区在线观看一区| 亚洲国产精品悠悠久久琪琪 | 黄色精品一区二区| 欧美紧缚bdsm在线视频| 亚洲欧美日韩成人高清在线一区| 久久综合国产精品| 亚洲一区在线看| 亚洲国产91精品在线观看| 欧美国产第一页| 欧美一区二区三区精品| 亚洲欧洲一级| 美女图片一区二区| 亚洲欧美日本国产有色| 最新成人在线| 国产视频久久久久| 欧美日韩一区二区在线观看| 午夜欧美理论片| 亚洲精品一级| 欧美福利网址| 久久精品成人欧美大片古装| 亚洲一区二区精品视频| 亚洲国产精品福利| 国产一本一道久久香蕉| 欧美日韩免费网站| 免费日韩视频| 久久久久成人网| 亚洲欧美一区二区三区极速播放 | 欧美成人国产| 欧美在线网址| 亚洲免费一在线| 亚洲精品一区二区三区四区高清| 国产亚洲福利社区一区| 国产精品chinese| 欧美精品一二三| 免费日韩av| 美国三级日本三级久久99| 欧美一区二区三区在线视频| 亚洲午夜电影| 亚洲蜜桃精久久久久久久 | 久久久爽爽爽美女图片| 亚洲欧美色婷婷| 亚洲一区二区3| 一二三区精品福利视频| 在线精品高清中文字幕| 国产亚洲激情视频在线| 国产精品色一区二区三区| 欧美午夜片在线观看| 欧美日韩免费一区二区三区| 欧美日韩国产一区二区三区| 欧美激情综合在线| 欧美精品一卡二卡| 欧美日韩一区二区在线播放| 欧美视频免费看| 国产精品国产三级国产普通话三级 | 午夜精品视频网站| 亚洲精品日产精品乱码不卡| 亚洲国产精品久久久久秋霞不卡| 久久久久五月天| 久久婷婷国产综合精品青草| 久久伊人免费视频| 美日韩在线观看| 欧美激情亚洲视频| 欧美福利一区二区三区| 亚洲国产第一| 欧美激情精品久久久久久大尺度| 欧美激情国产精品| 99精品热视频| 在线综合亚洲| 亚洲欧美在线另类| 久久精品国产在热久久 | 国产精品v日韩精品| 国产精品入口尤物| 国产区日韩欧美| 亚洲国产精品v| 亚洲精品永久免费| 亚洲免费网站| 美女精品网站| 日韩午夜激情av| 一区二区国产精品| 欧美一区二区三区日韩| 蜜臀a∨国产成人精品| 欧美日韩极品在线观看一区| 国产精品日韩一区二区三区| 国语精品中文字幕| 亚洲精选视频在线| 欧美一二三视频| 欧美成熟视频| 正在播放日韩| 久久综合999| 欧美性一二三区| 在线欧美影院| 亚洲专区免费| 欧美成人亚洲成人日韩成人| 99这里有精品| 老司机午夜免费精品视频| 欧美日韩精品免费观看视频完整| 国产欧美三级| 99亚洲视频| 久久精品日韩一区二区三区| 亚洲国产日韩欧美| 久久精品99国产精品| 国产精品igao视频网网址不卡日韩| 极品尤物久久久av免费看| 亚洲综合日韩在线| 亚洲高清在线观看一区| 亚洲一区区二区| 欧美精品一区二区三区蜜臀| 国产一区二区三区在线观看免费视频| 亚洲美女少妇无套啪啪呻吟| 久久久成人精品| 亚洲一区二区在| 欧美日韩精品二区| 亚洲伦理在线免费看| 噜噜噜噜噜久久久久久91| 亚洲特色特黄| 欧美日韩一区高清| 99re6这里只有精品| 欧美激情亚洲视频| 麻豆freexxxx性91精品| 国产在线不卡视频| 久久高清国产| 亚洲淫性视频| 国产精品久久久一区二区| 日韩一级黄色av| 亚洲国产欧美一区二区三区久久 | 久久精品一区二区三区不卡| 一本久道综合久久精品| 欧美剧在线观看| 亚洲精品久久久久久一区二区 | 一区二区三区高清在线| 欧美成人一品| 久久米奇亚洲| 一区二区三区在线免费观看| 久久久精品五月天| 久久精品国产一区二区三| 黄色精品免费| 欧美成人精品一区| 久久久一区二区三区| 亚洲国产精品女人久久久| 欧美大片第1页| 欧美成人午夜77777| 日韩视频亚洲视频| 日韩亚洲精品电影| 国产精品高清在线观看| 欧美在线观看www|