0

我试图使用 DirectXTK 在我的游戏引擎中实现鼠标和键盘支持。键盘非常简单,但我在实现适当的鼠标支持时遇到了问题。我正在关注这个在我的引擎中实现鼠标。Microsoft wiki 上的这篇文章说,在我能够将鼠标模式从绝对更改为相对之前,我已经调用了 SetWindow。这听起来很容易,但是当我尝试这样做时:

auto mouse = std::make_unique<DirectX::Mouse>();
mouse->SetWindow(hwnd);
mouse->SetMode(DirectX::Mouse::Mode::MODE_RELATIVE);

我收到一个错误:

E0135 class "DirectX::Mouse" has no member "SetWindow"

看起来此方法在 Mouse 类中不存在。这很奇怪,因为如果我用设置窗口删除这一行,它会编译,但由于 Mouse 类中的这个断言,我会在运行时失败:

assert(mWindow != nullptr);

所以需要设置窗口,但是当这个功能不存在时,我该怎么做呢?更糟糕的是来自wiki的文章并不旧,它是从2019年4月18日开始的。有人遇到过这个问题吗?我怎样才能解决这个问题?

4

1 回答 1

2

快速查看头文件,你会看到这个

#if (!defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP)) && defined(WM_USER)
    void __cdecl SetWindow(HWND window);
    static void __cdecl ProcessMessage(UINT message, WPARAM wParam, LPARAM lParam);
#endif

因此,您似乎没有WINAPI_FAMILY和/或没有WM_USER以合适的方式定义来启用在头文件中声明该方法。

我相信WM_USER会被定义,#include <windows.h>所以也许你需要做的就是包含之前的地方#include <mouse.h>

于 2019-06-28T10:34:07.390 回答