"SetWindow(HWND hwnd)" 的 "Mouse" 中没有 DirectXTK 成员

DirectXTK no member in "Mouse" for "SetWindow(HWND hwnd)"

我试图使用 DirectXTK 在我的游戏引擎中实现鼠标和键盘支持。这对于键盘来说非常简单,但是我在实现适当的鼠标支持方面遇到了问题。我正在关注 THIS 将鼠标实现到我的引擎中。这篇来自 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"

鼠标中似乎不存在此方法class。这很奇怪,因为如果我删除带有设置 window 的这一行,它将编译,但由于 Mouse class:

中的断言,我将在运行时失败
assert(mWindow != nullptr);

所以需要设置window,但是没有这个功能怎么办呢?更糟糕的是,来自 wiki 的文章并不旧,它是从 2019 年 4 月 18 日开始的。有人遇到过这个问题吗?我该如何解决这个问题?

快速浏览一下 header file,您会看到这个

#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 and/or WM_USER 以在头文件中启用该方法的声明。

我相信 WM_USER 将由 #include <windows.h> 定义,所以也许您需要做的就是在 #include <mouse.h>

之前包含的地方