2010-4
directdraw的错误返回值只有需要,需要查资料才知道什么意思,所以
错误例子
#define DDERR_INVALIDDIRECTDRAWGUID MAKE_DDHRESULT( 561 )
#define _FACDD 0x876
#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
= 0X88760231 = 2289435185
HRESULT ddrval = m_lpdd->GetCaps(&ddcaps, &helcaps);
if (FAILED(ddrval))
只能
CUtil::Instance()->DbgFilePrintf(L"Client",_T("Player: GetCaps Failed.error=%X"),ddrval);
ShowError(ddrval);
不能使用
//error=%s"),strerror(GetLastError())
CUtil::Instance()->DbgFilePrintf(L"Client",L"Player: GetCaps fail! error=%s",_tcserror(GetLastError()));
错误字符串保存在Quartz库
#pragma comment(lib,"Quartz.lib")//,
void ShowError(HRESULT hr)
{
if (FAILED(hr))
{
TCHAR szErr[MAX_ERROR_TEXT_LEN];
DWORD res = AMGetErrorText(hr, szErr, MAX_ERROR_TEXT_LEN);
if (res == 0)
{
wsprintf(szErr, "Unknown Error: 0x%2x", hr);
}
MessageBox(0, szErr, TEXT("Error!"), MB_OK | MB_ICONERROR);
}
}