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

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

FormatMessage的用法

根據一個錯誤碼返回一個錯誤訊息

DWORD FormatMessage(
    DWORD dwFlags,
    LPCVOID lpSource,
    DWORD dwMessageId,
    DWORD dwLanguageId,
    LPTSTR lpBuffer,
    DWORD nSize,
    va_list* Arguments
    );

dwFlags:
# FORMAT_MESSAGE_ALLOCATE_BUFFER // 此函數會分配內存以包含描述字串。
# FORMAT_MESSAGE_FROM_SYSTEM,  // 在系統的id映射表中尋找描述字串
# FORMAT_MESSAGE_FROM_HMODULE  // 在其他資源模塊中尋找描述字串
# FORMAT_MESSAGE_FROM_STRING   // 消息ID是個字串,不是個DWORD
通常為:FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM

lpSource:
# 指定了FORMAT_MESSAGE_FROM_HMODULE的話,此參數表示模塊的HANDLE
# 指定了FORMAT_MESSAGE_FROM_STRING的話,此參數表示id字串
通常為:NULL

dwMessageId:
消息ID;如果指定FORMAT_MESSAGE_FROM_STRING,將被忽略。

dwLanguageId:
消息描述所用的語言
通常為:0表示自動選擇

lpBuffer:
#如果未指定FORMAT_MESSAGE_ALLOCATE_BUFFER,則為自己提供的緩沖區
#否則為系統LocalAlloc分配,需要被用戶LocalFree

nSize:
#如果未指定FORMAT_MESSAGE_ALLOCATE_BUFFER,則為自己提供的緩沖區大小
#否則為系統LocalAlloc分配之最小緩沖區大小

Arguments:
通常不使用

下面是個例子:

TCHAR* buffer;
DWORD error = ERROR_DS_OBJ_STRING_NAME_EXISTS;
::FormatMessage(
    FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
    NULL,
    error,
    0,
    ( LPTSTR )&buffer,
    0,
    NULL );
::MessageBox( NULL, buffer, NULL, 0 );
LocalFree( buffer ); 
=======================================================================================

FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER,
  NULL,lVal,NULL,(LPTSTR)&hLocal,0,NULL);
第一個參數是標志,告訴這個FormatMessage函數,我想要的特點.
第三個參數是DWORD(unsigned long)類型
第五個參數是LPTSTR(這個類型即可用與ANSI,也克用與Unicode).用來接收與MessageID 對應的Description.

注意:hLocal是HLOCAL類型也就是HANDLE類型,需要將他轉換到LPTSTR.
第六個參數是這個buffer的大小,由于設置了FORMAT_MESSAGE_ALLOCATE_BUFFER那么他就可以置0了

例如:

   char szError[256];
   DWORD dwError = GetLastError();
   FormatMessage(
    FORMAT_MESSAGE_FROM_SYSTEM,
    NULL,                       
    0,
    0,
    szError,
    sizeof(szError),
    NULL);
   AfxMessageBox(szError);

=======================================================================================

FormatMessage功能就是將GetLastError得到的錯誤信息(這個錯誤信息是數字代號)轉化成字符串信息的函數
FormatMessage()
函數FormatMessage聲明如下:
WINBASEAPI
DWORD
WINAPI
FormatMessageA(
    DWORD dwFlags,//錯誤信息類型標志
    LPCVOID lpSource,//指定本地信息定義 其依賴于第一個參數的設置
    DWORD dwMessageId,//指定被請求的消息標示,如果dwFlags設置為FORMAT_MESSAGE_FROM_STRING 這個參數將被忽略
    DWORD dwLanguageId,//指定被請求的消息的語言標示
    LPSTR lpBuffer,//用來保存格式話后的消息字符串的地址
    DWORD nSize,//如果第一個參數為指定FORMAT_MESSAGE_ALLOCATE_BUFFER 這個參數就是字符串的最大長度
    va_list *Arguments
    );
WINBASEAPI
DWORD
WINAPI
FormatMessageW(
    DWORD dwFlags,
    LPCVOID lpSource,
    DWORD dwMessageId,
    DWORD dwLanguageId,
    LPWSTR lpBuffer,
    DWORD nSize,
    va_list *Arguments
    );
#ifdef UNICODE
#define FormatMessage FormatMessageW
#else
#define FormatMessage FormatMessageA
#endif // !UNICODE
調用函數的例子如下:
#001 //系統錯誤信息提示。
#002  //蔡軍生 2007/11/28 QQ:9073204 深圳
#003  void TestErrorInfo(void)
#004  {
#005         //進行出錯。
#006         if (!CreateDirectory(_T("c:\\"),0))
#007         {
#008               TCHAR szBuf[128];
#009               LPVOID lpMsgBuf;
#010               DWORD dw = GetLastError();
#011
#012              FormatMessage(
#013                   FORMAT_MESSAGE_ALLOCATE_BUFFER |
#014                   FORMAT_MESSAGE_FROM_SYSTEM,
#015                   NULL,
#016                   dw,
#017                   MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
#018                   (LPTSTR) &lpMsgBuf,
#019                   0, NULL );
#020
#021                wsprintf(szBuf,
#022                    _T("%s 出錯信息 (出錯碼=%d): %s"),
#023                    _T("CreateDirectory"), dw, lpMsgBuf);
#024
#025               LocalFree(lpMsgBuf);
#026
#027               //輸出提示。
#028               OutputDebugString(szBuf);
#029         }
#030        
#031  }
調用后輸出下面的提示信息:
CreateDirectory 出錯信息 (出錯碼=5): 拒絕訪問。

posted on 2008-07-11 11:43 肥仔 閱讀(1638) 評論(1)  編輯 收藏 引用 所屬分類: MFC存檔

評論

# re: FormatMessage的用法  回復  更多評論   

轉載別人的東東,就要加出處和致謝,這是原則,來不得半點含糊?。?!
2010-05-10 15:45 |
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美在线高清| 欧美成人精品福利| 久久精品99久久香蕉国产色戒| 国产女人精品视频| 裸体歌舞表演一区二区| 亚洲一区二区成人| 久久乐国产精品| 久久精品91久久香蕉加勒比| 欧美激情aⅴ一区二区三区| 欧美成人日本| 欧美二区在线| 亚洲欧美日韩一区在线| 免费日韩视频| 99亚洲一区二区| 亚洲手机成人高清视频| 久久爱www久久做| 男女激情视频一区| 美女精品网站| 亚洲黄色成人久久久| 欧美/亚洲一区| 一区二区三区高清视频在线观看| 欧美一级视频一区二区| 国产精品视频自拍| 午夜精品视频在线观看| 美女日韩在线中文字幕| 亚洲美女中出| 欧美国产在线观看| 久久久国产精品一区二区三区| 在线免费日韩片| 久久精品国产免费观看| 欧美中文字幕久久| 亚洲精品一二三区| 亚洲黄网站在线观看| 欧美一区二区三区四区在线观看地址| 亚洲电影在线播放| 欧美在线影院| 免费不卡欧美自拍视频| 久久精品30| 久久九九国产精品怡红院| 欧美日韩一级片在线观看| 极品中文字幕一区| 欧美中文日韩| 在线视频欧美精品| 亚洲性视频网站| 久久激情视频久久| 国产精品v亚洲精品v日韩精品 | 久久久久女教师免费一区| 欧美成人精品三级在线观看| 国产精品久久网站| 亚洲国产精品久久精品怡红院| 久久精品91久久香蕉加勒比| 日韩亚洲欧美综合| 欧美成人精品在线| 99精品国产99久久久久久福利| 欧美激情在线有限公司| 噜噜噜在线观看免费视频日韩| 在线观看91精品国产麻豆| 老色鬼精品视频在线观看播放| 亚洲女人av| 国产精品免费福利| 久久久久久穴| 久久精品国产99国产精品| 亚洲美女一区| 欧美日本精品一区二区三区| 影音先锋久久久| 亚洲嫩草精品久久| 一区二区三区四区五区视频| 久久婷婷综合激情| 国产精品久久久久久户外露出 | 久久99在线观看| 亚洲欧美激情视频| 国产欧美一区二区三区久久 | 久久国产免费看| 一区二区三区精品| 欧美成人一品| 最新成人av网站| 伊人久久噜噜噜躁狠狠躁| 中日韩视频在线观看| 亚洲国产综合在线| 欧美亚洲一区二区在线| 一区二区三区|亚洲午夜| 蜜臀av性久久久久蜜臀aⅴ| 久久精品一区二区| 国产精品日日摸夜夜摸av| 麻豆成人在线播放| 国产精品对白刺激久久久| 欧美黄免费看| 看片网站欧美日韩| 国产一区二区久久精品| 久久亚洲影院| 猫咪成人在线观看| 91久久综合亚洲鲁鲁五月天| 欧美日韩国产一中文字不卡| 亚洲日本视频| 久久福利视频导航| 99一区二区| 国产伦理一区| 亚洲影视中文字幕| 亚洲国产日本| 亚洲午夜日本在线观看| 六月婷婷一区| 午夜国产精品视频免费体验区| 蜜桃精品久久久久久久免费影院| 欧美激情中文字幕乱码免费| 91久久久国产精品| 亚洲一区激情| 亚洲一区国产一区| 亚洲美女淫视频| 欧美多人爱爱视频网站| 在线日本高清免费不卡| 久久这里只精品最新地址| 欧美国产在线视频| 久久精品一区中文字幕| 亚洲国产一区二区视频| 国产午夜精品全部视频播放| 欧美jjzz| 午夜在线电影亚洲一区| 老司机成人网| 欧美福利视频网站| 亚洲免费在线| 亚洲欧美美女| 日韩视频在线观看| 国产视频精品免费播放| 亚洲欧美日韩国产一区二区| 99精品国产99久久久久久福利| 欧美高清影院| 91久久在线视频| 亚洲国产小视频在线观看| 午夜精品在线观看| 一区二区三区福利| 亚洲精品一区二区网址| 亚洲日本中文字幕免费在线不卡| 欧美伊人久久大香线蕉综合69| 亚洲一级免费视频| 久久国产精品99国产| 久久久一二三| 亚洲精品一二三| 久久都是精品| 欧美激情国产高清| 国产综合色在线视频区| 亚洲国产精品t66y| 99热在这里有精品免费| 亚洲色图综合久久| 久久九九精品99国产精品| 理论片一区二区在线| 亚洲大黄网站| 亚洲欧美福利一区二区| 久久久久91| 国产女主播一区二区三区| 在线看视频不卡| 香蕉久久a毛片| 日韩午夜一区| 欧美一区在线直播| 国产精品白丝jk黑袜喷水| 在线免费精品视频| 久久男人av资源网站| 亚洲午夜视频在线| 久久手机精品视频| 国产精品第十页| 亚洲午夜精品一区二区| 久久综合网络一区二区| 亚洲日本成人| 久久精品国产久精国产思思| 欧美阿v一级看视频| 欧美激情国产高清| 国产精品久久久久久久一区探花| 在线看不卡av| 久久综合久久久久88| 亚洲精品国产精品国自产观看| 亚洲一区三区视频在线观看| 欧美日韩精品一本二本三本| 亚洲图片激情小说| 小辣椒精品导航| 国产婷婷色一区二区三区四区| 欧美成人乱码一区二区三区| 91久久午夜| 欧美一区二区三区免费视频| 美女国产一区| 欧美一区二区三区视频免费| 亚洲欧洲精品一区二区三区不卡| 欧美一区二区三区视频在线观看| 欧美激情aaaa| 老牛国产精品一区的观看方式| 久久精品国产欧美激情| 亚洲成人在线| 午夜亚洲福利| 亚洲在线免费视频| 国产精品护士白丝一区av| 久久精品亚洲精品国产欧美kt∨| 亚洲精品欧美一区二区三区| 国产一区在线免费观看| 女同性一区二区三区人了人一| 久久免费少妇高潮久久精品99| 在线观看日韩av先锋影音电影院| 日韩小视频在线观看| 欧美片第1页综合| 亚洲理论电影网| 欧美一级在线播放| 午夜在线精品偷拍| 欧美精品国产精品|