C++ DirectXTK“中无成员”;鼠标“;至于;设置窗口(HWND HWND)";

C++ DirectXTK“中无成员”;鼠标“;至于;设置窗口(HWND HWND)";,c++,mouse,directx-11,directxtk,C++,Mouse,Directx 11,Directxtk,我试图使用DirectXTK在我的游戏引擎中实现鼠标和键盘支持。键盘很简单,但我在实现正确的鼠标支持时遇到了问题。我正在跟踪在我的引擎中实现鼠标。这篇来自MicrosoftWiki的文章说,在我能够将鼠标模式从绝对更改为相对之前,我已经调用了SetWindow。听起来很简单,但当我尝试这样做时: automouse=std::make_unique(); 鼠标->设置窗口(hwnd); 鼠标->设置模式(DirectX::鼠标::模式::模式\u相对); 我得到一个错误: E0135 clas

我试图使用DirectXTK在我的游戏引擎中实现鼠标和键盘支持。键盘很简单,但我在实现正确的鼠标支持时遇到了问题。我正在跟踪在我的引擎中实现鼠标。这篇来自MicrosoftWiki的文章说,在我能够将鼠标模式从绝对更改为相对之前,我已经调用了SetWindow。听起来很简单,但当我尝试这样做时:

automouse=std::make_unique();
鼠标->设置窗口(hwnd);
鼠标->设置模式(DirectX::鼠标::模式::模式\u相对);
我得到一个错误:

E0135 class "DirectX::Mouse" has no member "SetWindow"
看起来这个方法在鼠标类中不存在。这很奇怪,因为如果我用设置窗口删除这一行,它将编译,但由于鼠标类中的这个断言,我将在运行时失败:

assert(mWindow!=nullptr);
所以需要设置窗口,但当这个函数不存在时,我该怎么做呢?更糟糕的是,维基上的文章并不老,而是2019年4月18日的文章。有人遇到过这个问题吗?如何修复此问题?

快速查看,您将看到此问题

#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_系列
和/或
WM_用户
,以便在头文件中声明该方法

我相信
WM\u USER
将由
#include
定义,所以您可能需要做的就是将包含放在
#include

之前快速查看

#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_系列
和/或
WM_用户
,以便在头文件中声明该方法


我相信
wmu用户
将由
#include
定义,所以也许你所需要做的就是在
#include

之前放置include。你是对的,我必须在包含之前包含。我在。谢谢你说得对,我必须先包括#在包括之前包括#包括。我把这个细节添加到了。谢谢