酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

なんとエラーメッセージが取得出来た

WIN32APIで処理に失敗した後にGetLastError()を使いなさいとは、リファレンスに書かれていたので知っていたのですが、数字(ID)だけ見ても何もわかんねーYO!!と思っていました。

今日たまたま知ったのですが、GetLastError()で取得したIDからエラーメッセージを取得する方法があったみたいで早速使ってみました。

    static inline void OutputMessage(DWORD dwMessageId)  
    {  
      LPTSTR lpBuffer = NULL;  
      FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,  
                    NULL, GetLastError(), LANG_USER_DEFAULT,   
                    (LPTSTR)&lpBuffer, 0, NULL );  
      MessageBox(NULL, lpBuffer, "Last Error Message", MB_ICONHAND|MB_OK);  
      LocalFree(lpBuffer);  
    }  

を実行すると、、、

おぉー。ちゃんとエラーメッセージが表示されてるよ!