我试图使用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日开始的。有人遇到这个问题吗?我该如何解决?
答案 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>
之前的地方