DirectXTK在“鼠标”中没有“ SetWindow(HWND hwnd)”的成员

时间:2019-06-28 10:24:59

标签: c++ mouse directx-11 directxtk

我试图使用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"

在Mouse类中似乎不存在此方法。这很奇怪,因为如果我用设置窗口删除此行,它将进行编译,但是由于Mouse类中的以下断言,我将在运行时失败:

assert(mWindow != nullptr);

因此需要设置窗口,但是当该功能不存在时我该怎么办?更糟糕的是Wiki上的文章并不陈旧,是从2019年4月18日开始的。有人遇到这个问题吗?我该如何解决?

1 个答案:

答案 0 :(得分:2)

快速浏览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和/或WM_USER来在头文件中启用该方法的声明。

我相信WM_USER将由#include <windows.h>定义,因此您可能要做的就是将包含在#include <mouse.h>之前的地方