読者です 読者をやめる 読者になる 読者になる

をるふちゃんのブログ

C++ | DirectX | VC++

DirectXのエラー処理

この記事(デバッグアサーションとかのメモ)の続編ってわけでもないけど。
例によってVC++以下略。

こいつらはすべてリリース版では除去される。

エラー処理

エラーコードを示す文字列を返す

TCHAR* WINAPI DXGetErrorDescription( HRESULT hr );MSDN
そのまんま。HRESULT リターン コードを受け取ってエラーコードを示す文字列を返す。

エラーコードに関連付けられている名前を返す

TCHAR* WINAPI DXGetErrorString( HRESULT hr);MSDN
同様にHRESULT リターン コードを受け取ってエラーの内容を示す文字列を返す。

エラーコードを文字列に変換してデバッガに出力する

HRESULT WINAPI DXTrace(
    CHAR* strFile,  // ファイル名。 __FILE__ マクロを突っ込んでおくといい。
    DWORD dwLine, // 行番号。 __LINE__ マクロを以下略
    HRESULT hr, // エラーコード。内部でDXGetErrorStringを呼んでくれる。
    CHAR* strMsg, // オプションとして表示する文字列へのポインタ。
    BOOL bPopMsgBox, //メッセージボックスを出すかどうか。TRUEで表示。
);

MSDN
説明は不要っぽい。

エラー処理マクロ

DxTraceを扱いやすくしたもの。

エラー情報をデバガに投げる

HRESULT DXTRACE_ERR( char* str, HRESULT hr );MSDN
内部ではこんな感じ。
DXTRACE_ERR(str,hr) DXTrace(__FILE__,(DWORD)__LINE__,hr,str, FALSE)

エラー情報をメッセージボックスに投げる

HRESULT DXTRACE_ERR_MSGBOX( char* str, HRESULT hr );MSDN
内部ではこんな感じ。
DXTRACE_ERR_MSGBOX(str,hr) DXTrace(__FILE__,(DWORD)__LINE__,hr,str,TRUE)

文字列をデバガに投げる

HRESULT DXTRACE_MSG( char* str );MSDN
内部ではこんな感じ。
DXTRACE_MSG(str) DXTrace( __FILE__, (DWORD)__LINE__, 0, str, FALSE)