3

我们有一个需要使用 Direct3D 的应用程序。具体来说,它至少需要 DirectX 9.0c 版本 4.09.0000.0904。虽然这应该存在于所有较新的 XP 机器上,但它可能不会安装在较旧的 XP 机器上。如何以编程方式(使用 C++)确定它是否已安装?我希望能够向用户提供 Direct3D 将不可用的信息消息。

4

4 回答 4

5

调用 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));
}
于 2008-09-17T03:56:05.373 回答
0

根据 DirectX 9.0 SDK(2004 年夏季)文档,请参阅位于 \Samples\Multimedia\DXMisc\GetDXVer 的 GetDXVer SDK 示例。

于 2008-09-17T03:53:00.873 回答
0

快速的 Google 搜索会找到这篇文章,它确定了版本号在注册表中的位置,然后提供了一个案例语句,将内部版本号映射到我们更熟悉的版本号。

另一个快速的 Google 搜索出现了一个用 C++读取注册表的示例。

享受...

于 2008-09-17T04:10:17.727 回答
0

是的,使用 2009 年 3 月 DirectX SDK 中的 DirectX 安装示例中显示的机制。(查看示例浏览器中的“系统”类别。)

不要使用注册表!这些东西是无证的,不能保证有效。

唯一受支持的方法是使用 DirectSetup API,它显示在 DirectX 安装示例中。我还在我的书The Direct3D Graphics Pipeline中的第 24 章中介绍了这些内容。您可以在上述网址免费下载该章节。

于 2009-07-17T01:42:32.213 回答