0

我正在使用 MFC 创建一个突破性游戏,现在我正在编写一个关卡创建器。为了让用户选择要创建哪个块,我使用的是 SplitButton。我已经创建了菜单资源来与我的 SplitButton 配对,但我希望菜单中的每个选项都能做一些事情。阅读有关如何将 a 分配afx_msg void OnOptionSelected()给事件的文档,BEGIN_MESSAGE_MAP我发现:

//Microsoft Documentation Code
BEGIN_MESSAGE_MAP(CMyDoc, CDocument)
ON_COMMAND(ID_MYCMD, &CMyDoc::OnMyCommand)
END_MESSAGE_MAP()

我对我的代码做了同样的事情,afx_msg在我的菜单资源中为我的每个菜单选项创建一个

//My code in CCreateWindow.h (Inside DECLARE_MESSAGE_MAP())
afx_msg void OnToughBlockChosen();
afx_msg void OnSturdyBlockChosen();
afx_msg void OnWeakBlockChosen();
afx_msg void OnSpecialBlockChosen();
afx_msg void OnIndestructibleBlockChosen();

因此他们的分配

//My code in CCreateWindow.cpp (Inside BEGIN_MESSAGE_MAP)
ON_COMMAND(ID_CHOOSEBLOCKTYPE_TOUGHBLOCK, &CCreateWindow::OnToughBlockChosen())
ON_COMMAND(ID_CHOOSEBLOCKTYPE_STURDYBLOCK, &CCreateWindow::OnSturdyBlockChosen())
ON_COMMAND(ID_CHOOSEBLOCKTYPE_WEAKBLOCK, &CCreateWindow::OnWeakBlockChosen())
ON_COMMAND(ID_CHOOSEBLOCKTYPE_SPECIALBLOCK, &CCreateWindow::OnSpecialBlockChosen())
ON_COMMAND(ID_CHOOSEBLOCKTYPE_INDESTRUCTIBLEBLOCK, &CCreateWindow::OnIndestructibleBlockChosen())

但是当我这样做时,E024 a nonstatic member reference must be relative to a specific object出现了错误。到目前为止,我知道如何解决ON_COMMAND(ID_CHOOSEBLOCKTYPE_TOUGHBLOCK, &m_CreateWindow.OnToughBlockChosen())它(我只是不知道现在该怎么做,因为我做了与 Microsoft 文档中相同的操作,并且它明确指出:.h.cpp

ON_COMMAND宏用于处理由菜单、按钮和加速键生成的命令消息。

4

0 回答 0