我试图在我的游戏引擎中使用DirectXTK实现鼠标和键盘支持。这是相当简单的键盘,但我有一个问题,以实现适当的鼠标支持。我跟踪这实现鼠标进入我的引擎。这篇来自Microsoft的文章说,在我能够将鼠标模式从绝对模式更改为相对模式之前,我已经调用了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"看起来这个方法在鼠标类中不存在。这很奇怪,因为如果我删除这一行并设置窗口,它就会编译,但由于鼠标类中的这个断言,运行时我会失败:
assert(mWindow != nullptr);所以它需要设置窗口,但是当这个函数不存在的时候,我该怎么做呢?更糟糕的是,维基的文章并不老,是2019年4月18日的。有人遇到过这个问题吗?我怎么才能解决这个问题?
发布于 2019-06-28 10:34:07
快速查看一下头文件,您将看到以下内容
#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>之前包含
https://stackoverflow.com/questions/56805224
复制相似问题