Direct3D を使用する必要があるアプリケーションがあります。具体的には、少なくとも DirectX 9.0c バージョン 4.09.0000.0904 が必要です。これはすべての新しい XP マシンに存在するはずですが、古い XP マシンにはインストールされていない可能性があります。プログラムで (C++ を使用して) インストールされているかどうかを確認するにはどうすればよいですか? Direct3D が利用できなくなるという情報メッセージをユーザーに提供できるようにしたいと考えています。
4 に答える
DirectXSetupGetVersion を呼び出します: http://msdn.microsoft.com/en-us/library/microsoft.directx_sdk.directsetup.directxsetupgetversion
dsetup.h を含める必要があります。
サイトのサンプルコードは次のとおりです。
DWORD dwVersion;
DWORD dwRevision;
if (DirectXSetupGetVersion(&dwVersion, &dwRevision))
{
printf("DirectX version is %d.%d.%d.%d\n",
HIWORD(dwVersion), LOWORD(dwVersion),
HIWORD(dwRevision), LOWORD(dwRevision));
}
Google で簡単に検索すると、レジストリ内のバージョン番号の場所を特定するこの記事が見つかり、内部のバージョン番号を私たちがよく知っているバージョン番号にマップするケース ステートメントが提供されます。
別の簡単な Google 検索で、レジストリから読み取るための C++ の例が見つかります。
楽しみ...
はい。2009 年 3 月の DirectX SDK の DirectX インストール サンプルに示されているメカニズムを使用してください。(サンプル ブラウザの「システム」カテゴリの下を見てください。)
レジストリを使用しないでください。そのようなものは文書化されておらず、動作することが保証されていません。
サポートされている唯一の方法は、DirectX インストール サンプルに示されている DirectSetup API を使用することです。これについては、第 24 章の「インストールとセットアップ」でも説明しています。私の著書The Direct3D Graphics Pipeline . その章は上記の URL から無料でダウンロードできます。
DirectX 9.0 SDK (2004 年夏) のドキュメントによると、\Samples\Multimedia\DXMisc\GetDXVer にある GetDXVer SDK サンプルを参照してください。