【问题标题】:'The parameter is incorrect' while attempting to use PInvoke DirectDraw in WinCE5.0尝试在 WinCE5.0 中使用 PInvoke DirectDraw 时出现“参数不正确”
【发布时间】:2010-12-08 03:33:32
【问题描述】:

关于让 DirectDraw 在 CE5.0 系统上运行的问题,我已经有一段时间了。我终于找到了一些涉及让它在 Windows Moblie 上运行的代码,并且通过一些混乱,我已经正确编译了代码。

它成功地通过创建带有windows窗体句柄的实例运行,但是当它通过以下方式检查系统的功能时:

DDCAPS halCaps = new DDCAPS(), helCaps = new DDCAPS();
halCaps.dwSize = (uint)Marshal.SizeOf(typeof(DDCAPS));
helCaps.dwSize = halCaps.dwSize;
result = dDraw.GetCaps(out halCaps, out helCaps);

我收到“参数不正确”的异常。如果我对此函数发表评论,我也会在以后的函数中遇到此异常,这使我相信我的 PInvoke 某处存在问题,但我不知道在哪里搜索,因为有关 CE5.0 DirectDraw 的信息似乎非常有限。我目前正在使用

导入我的函数
[DllImport("ddraw.dll", CallingConvention = CallingConvention.Winapi)]

然而,错误似乎只来自于类似

的接口
[Guid("9c59509a-39bd-11d1-8c4a-00c04fd930c5"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

到目前为止,我一直关注的获得最佳结果的文章(以及我一直使用的代码作为尝试基线的文章)是 here。我的代码过去是不同的,但我一直在不断地进行更改,以查看我的代码中是否存在问题,所以在这一点上它实际上是相同的。

任何有关导致问题的帮助,我应该在哪里通过 CE5.0 查找有关 DirectDraw 的信息,或者我正在做的任何其他严重错误的指针,将不胜感激。

额外信息: 我正在开发的设备是一个自定义框架,其中 D3D 不是一个选项,尽管我确实从电路板制造商那里获得了支持 DirectDraw 并且 2d 硬件加速可用的信息,所以这应该不是问题。

【问题讨论】:

    标签: c# graphics pinvoke windows-ce directdraw


    【解决方案1】:

    为遇到类似问题的其他人提供此信息。看了一会 C++ 代码,CE5.0 使用的变量和函数似乎与 6.0+ 不同,因此您必须使用 IDirectDraw4 之类的东西,而不是 IDirectDraw 和 IDirectDrawSurface5,后者必须从 IDirectDrawSurface4 转换而来。

    我希望这对遇到类似问题的其他人来说是有用的信息。我还没有解决此代码的所有问题,但它是一个很好的起点。

    【讨论】:

      猜你喜欢
      • 2020-08-10
      • 1970-01-01
      • 2019-03-27
      • 2021-12-12
      • 2013-04-21
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多