IDirectDraw::GetCaps が返さDDERR_INVALIDPARAMS
れる (別名E_INVALIDARG
、別名 0x80070057) を含むこの小さなコード スニペットがあります。
読み込まれた dll は ddraw.dll 5.03.2600.5512 (xpsp.080413-0845) です。
ディスプレイ ハードウェアに 3D アクセラレーション (DDCAPS_3D) があるかどうかを確認する必要があります。
問題を解決する方法がわかりません。スニペットはとてもシンプルですが、何か不足していますか?
どうもありがとうございました。
アレッサンドロ
#include <ddraw.h>
#include <iostream>
#define TEST_HR(hr) if(hr!=DD_OK){ std::cout << "Error 0x" << std::hex << static_cast<unsigned long>(hr) << " at line: " << std::dec << __LINE__; return __LINE__;}
int main(int argc, char* argv[])
{
::CoInitialize( 0 );
IDirectDraw* dd;
TEST_HR( ::DirectDrawCreate( 0, &dd, 0 ) );
DDCAPS hel_caps, hw_caps;
::ZeroMemory( &hel_caps, sizeof( DDCAPS ) );
::ZeroMemory( &hw_caps, sizeof( DDCAPS ) );
TEST_HR( dd->GetCaps( &hw_caps, &hel_caps ) );
::CoUninitialize();
return 0;
}