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

子彈 の 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 閱讀(15308) 評論(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內部修改,指向他申請的內存空間。
  回復  更多評論
  


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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电影| 欧美一区二区三区男人的天堂 | 午夜激情综合网| 久久精品久久99精品久久| 久久精品麻豆| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美高清视频一区二区三区在线观看| 美女视频黄a大片欧美| 美女91精品| 亚洲欧洲在线一区| 中文日韩电影网站| 久久久久久久久久久久久女国产乱 | 久久久久88色偷偷免费| 免费成人黄色av| 亚洲精品中文字| 午夜精品视频网站| 欧美福利精品| 国产有码一区二区| 亚洲婷婷综合色高清在线| 久久久精彩视频| 亚洲国产精品精华液网站| 一区二区精品| 久久色在线播放| 国产精品青草综合久久久久99| 狠狠色狠狠色综合日日tαg| aⅴ色国产欧美| 美女精品网站| 亚洲欧美日韩国产| 欧美日韩免费看| 91久久国产综合久久蜜月精品| 亚洲综合电影| 91久久综合亚洲鲁鲁五月天| 欧美伊人久久| 国产精品视频一区二区高潮| 亚洲精品美女在线观看播放| 亚洲视频在线一区观看| 久久久综合网站| 亚洲国产一成人久久精品| 一本色道久久综合亚洲精品不卡 | 一区二区三区久久| 免费不卡亚洲欧美| 国产一区二区中文| 午夜精品久久久久久99热软件| 欧美成人午夜激情视频| 亚洲欧美一区二区在线观看| 欧美日韩精品一区| 亚洲黄色有码视频| 农夫在线精品视频免费观看| 欧美一区二区私人影院日本 | 久久久国产一区二区| 国产精品高潮呻吟久久av无限| 亚洲日本成人网| 美女主播视频一区| 久久国产精品亚洲77777| 国产精品视频xxxx| 小处雏高清一区二区三区| 日韩亚洲一区在线播放| 欧美激情bt| 亚洲精品久久久久久久久久久久久| 久久香蕉国产线看观看网| 欧美一区二区三区视频在线观看 | 久久激情婷婷| 韩日欧美一区二区| 免费一区视频| 欧美成人嫩草网站| 一区二区三区黄色| 亚洲天堂av综合网| 国产日韩欧美在线播放不卡| 久久精品成人一区二区三区 | 国产精品卡一卡二| 久久成人久久爱| 欧美自拍丝袜亚洲| 在线成人h网| 亚洲日本va午夜在线影院| 欧美日韩中字| 久久久一本精品99久久精品66| 久久综合中文字幕| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲国产精品久久久久婷婷884 | 亚洲视频在线二区| 国产欧美日韩免费| 久久三级视频| 欧美激情一区二区三区在线| 亚洲一区二区不卡免费| 欧美一二三区精品| 亚洲精品国产精品国自产在线| 欧美精品精品一区| 午夜精品免费在线| 韩国精品久久久999| 欧美成人资源网| 欧美日韩a区| 久久九九免费| 欧美激情视频一区二区三区不卡| 亚洲一区二区欧美日韩| 久久精品99久久香蕉国产色戒| 亚洲精品女av网站| 亚洲欧美日韩在线| 亚洲美女免费视频| 午夜精品一区二区三区在线视| 亚洲高清av在线| 亚洲免费视频一区二区| 亚洲精品国产精品久久清纯直播| 亚洲免费在线看| 日韩亚洲精品视频| 久久久精品一品道一区| 午夜精品久久久久久久久久久久| 免费观看30秒视频久久| 性欧美videos另类喷潮| 欧美18av| 美日韩在线观看| 国产婷婷色一区二区三区在线 | 欧美福利一区二区| 久久在精品线影院精品国产| 欧美日韩高清在线| 亚洲国产高清在线| 1024精品一区二区三区| 亚洲欧美日韩国产中文 | 亚洲一区一卡| 欧美激情中文不卡| 免费在线看成人av| 国产在线视频欧美一区二区三区| av不卡在线| 中文精品视频| 欧美精品免费视频| 欧美激情在线免费观看| 精品动漫av| 久久久久久久久久久久久久一区| 欧美制服丝袜| 国产日韩欧美一区二区| 亚洲欧美日韩爽爽影院| 亚洲欧美日韩在线播放| 国产精品a级| 一区二区三区导航| 午夜精品短视频| 国产麻豆午夜三级精品| 亚洲在线观看视频| 久久激情久久| 曰韩精品一区二区| 女同一区二区| 亚洲精品人人| 亚洲男人的天堂在线观看| 欧美香蕉视频| 欧美一区二区黄色| 蜜桃久久精品一区二区| 亚洲国产影院| 欧美日产国产成人免费图片| 欧美福利一区| 99精品欧美| 亚洲香蕉在线观看| 欧美福利影院| 亚洲日韩中文字幕在线播放| 91久久国产精品91久久性色| 美女视频黄 久久| 亚洲国产高清一区| 99国产精品99久久久久久粉嫩 | 久久久久久有精品国产| 久久久综合免费视频| 亚洲国产精品va| 欧美日韩国产综合一区二区| 亚洲免费综合| 你懂的国产精品| 一区二区三区欧美成人| 国产精品永久免费| 久久婷婷国产麻豆91天堂| 亚洲精品小视频在线观看| 午夜精品区一区二区三| 在线精品视频一区二区| 欧美日本一区二区三区| 亚洲欧美在线免费观看| 欧美激情 亚洲a∨综合| 亚洲一区综合| 亚洲电影在线| 国产精品日韩电影| 嫩草影视亚洲| 午夜精品久久久久久久白皮肤 | 国产精品入口日韩视频大尺度| 久久另类ts人妖一区二区| 一本色道综合亚洲| 欧美freesex交免费视频| 亚洲综合电影一区二区三区| 亚洲第一黄色网| 国产噜噜噜噜噜久久久久久久久| 久久一区二区三区av| 亚洲无人区一区| 亚洲激情视频在线播放| 久久理论片午夜琪琪电影网| 一区二区三区毛片| 在线免费高清一区二区三区| 国产精品久久久久三级| 欧美不卡高清| 久久免费视频在线| 欧美一区二区三区精品| 亚洲天堂男人| 一区二区国产精品| 亚洲精品乱码久久久久久日本蜜臀|