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

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,  // 在系統(tǒng)的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,則為自己提供的緩沖區(qū)
#否則為系統(tǒng)LocalAlloc分配,需要被用戶LocalFree

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

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 //系統(tǒng)錯誤信息提示。
#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 肥仔 閱讀(1643) 評論(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>
            欧美怡红院视频| 国产亚洲日本欧美韩国| 亚洲一区二区在线看| 日韩一级不卡| 亚洲午夜av电影| 亚洲午夜在线观看| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 欧美一级淫片播放口| 午夜欧美大尺度福利影院在线看| 99国产精品99久久久久久粉嫩| 亚洲巨乳在线| 午夜久久久久久久久久一区二区| 久久精品99国产精品| 免费不卡中文字幕视频| 亚洲国产电影| 一区二区高清| 久久精品成人一区二区三区| 另类成人小视频在线| 欧美极品欧美精品欧美视频| 国产精品国产三级国产专播品爱网 | 久久夜色精品一区| 亚洲国产精品成人| 亚洲专区一区二区三区| 久久婷婷综合激情| 99精品国产福利在线观看免费 | 国产一区二区三区奇米久涩| 亚洲国产成人久久综合| 日韩一区二区精品| 久久精品视频一| 亚洲国产精品视频| 亚洲欧美国产日韩中文字幕| 久久影院午夜论| 国产精品久久久久免费a∨大胸 | 亚洲第一福利视频| 亚洲午夜在线视频| 免费成人黄色片| 亚洲视频在线观看视频| 牛牛影视久久网| 国内精品视频666| 先锋影音久久久| 亚洲精品一区二区三区樱花 | 欧美主播一区二区三区| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美午夜剧场| 亚洲国产日韩一区二区| 欧美在线综合视频| 99精品国产在热久久| 免费在线成人| 好看的av在线不卡观看| 欧美一区二区三区视频免费| 91久久久在线| 欧美成人久久| 亚洲高清免费| 另类av一区二区| 午夜精品影院| 国产区亚洲区欧美区| 西西人体一区二区| 亚洲一级在线观看| 欧美三日本三级少妇三99| 一本久久知道综合久久| 91久久精品国产91性色tv| 久久噜噜噜精品国产亚洲综合| 国产乱码精品一区二区三区忘忧草| 一区二区三区福利| 亚洲精品国精品久久99热一| 欧美成人精品一区二区| 亚洲区国产区| 亚洲日韩第九十九页| 欧美国产激情二区三区| 99综合在线| 亚洲视频在线观看网站| 国产精品羞羞答答xxdd| 欧美中文字幕精品| 欧美日韩一区二区视频在线| 欧美在线视频在线播放完整版免费观看 | 久久精品综合一区| 亚洲女性裸体视频| 欧美日韩99| 欧美大片免费| 在线观看福利一区| 欧美尤物一区| 欧美一级久久久久久久大片| 欧美日韩精品在线| 亚洲欧洲在线播放| 亚洲欧洲在线看| 蜜月aⅴ免费一区二区三区 | 欧美成人69av| 欧美1区3d| 在线观看视频一区| 久久久精品午夜少妇| 久久一二三区| 在线观看日韩av电影| 鲁鲁狠狠狠7777一区二区| 欧美99在线视频观看| 狠狠色丁香婷婷综合| 欧美一区二区三区视频| 久久精品亚洲国产奇米99| 国产日韩欧美| 久久精品日产第一区二区| 久久综合狠狠| 亚洲乱亚洲高清| 欧美日韩亚洲国产精品| 99视频一区二区| 午夜精品久久久久久久男人的天堂| 国产精品a久久久久久| 亚洲视频高清| 久久成人综合网| 激情欧美一区二区三区| 久久九九热免费视频| 欧美激情aⅴ一区二区三区| 亚洲电影视频在线| 欧美国产一区在线| 亚洲手机在线| 麻豆精品精品国产自在97香蕉| 1204国产成人精品视频| 欧美黄色免费网站| 亚洲午夜激情网站| 久久精品亚洲乱码伦伦中文 | 欧美电影资源| 一本久道久久久| 国产日韩欧美另类| 久久婷婷亚洲| 宅男噜噜噜66一区二区66| 亚洲欧洲99久久| 影音先锋成人资源站| 欧美日韩hd| 亚洲女同性videos| 欧美高清视频一二三区| 亚洲一区二区三区视频播放| 国产精品视频999| 久久av红桃一区二区小说| 亚洲国产另类精品专区| 午夜精品偷拍| 亚洲三级免费| 国产小视频国产精品| 欧美精品久久久久久久久老牛影院| 香蕉久久一区二区不卡无毒影院 | 午夜日韩在线观看| 一区二区三区亚洲| 欧美日韩一区二区三| 久久成人18免费网站| 亚洲靠逼com| 久久精品视频一| 亚洲视频欧洲视频| 在线日本欧美| 国产精品永久免费观看| 米奇777在线欧美播放| 亚洲中字在线| 亚洲日本在线视频观看| 蜜臀久久99精品久久久久久9 | 亚洲大胆视频| 国产精品一区二区三区久久| 欧美国产国产综合| 久久久久免费视频| 亚洲欧美日韩成人高清在线一区| 亚洲国产电影| 免费在线亚洲| 欧美尤物一区| 亚洲一区国产视频| 亚洲美女精品成人在线视频| 黄色资源网久久资源365| 国产精品久久久一本精品| 欧美精品xxxxbbbb| 欧美mv日韩mv国产网站app| 欧美伊人久久久久久久久影院| 艳女tv在线观看国产一区| 亚洲国产三级网| 久久一区二区三区国产精品 | 亚洲欧洲日韩在线| 在线播放中文字幕一区| 国产一区二区无遮挡| 国产精品夫妻自拍| 欧美视频中文字幕在线| 欧美日韩国产黄| 欧美激情亚洲一区| 欧美福利影院| 欧美91精品| 欧美va亚洲va国产综合| 欧美大片一区| 欧美成熟视频| 欧美日韩国产成人| 欧美日韩一区二区三区四区在线观看 | 欧美精品大片| 欧美黄免费看| 国产精品r级在线| 欧美视频一区二区三区| 欧美日一区二区三区在线观看国产免| 欧美国产免费| 欧美日韩在线高清| 国产精品欧美日韩一区二区| 国产精品视频免费在线观看| 国产精品theporn88| 国产精品久久福利| 国产精品日韩在线| 国产一区二区三区黄| 国内成人在线| 亚洲视屏在线播放| 免费影视亚洲| 欧美资源在线观看| 香蕉成人伊视频在线观看|