Ошибка с BEGIN_MESSAGE_MAP & quot; ссылка на нестатический элемент должна относиться к конкретному объекту & quot; MFC

Я создаю игру с использованием MFC, и теперь я программирую создателя уровней. Чтобы пользователь мог выбрать, какой блок нужно создать, я использую SplitButton. Я создал ресурс меню для сопряжения с моим SplitButton, но я хочу, чтобы каждый из пунктов меню что-то делал. Чтение документации о том, как назначить 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())) но я просто не знаю, если это способ исправить это, и если это так, я не знаю, где объявить объект, так как я пытался сделать это в .h а также .cpp и никто не работал. Я просто не знаю, что делать сейчас, так как я сделал то же самое, что и в документации Microsoft, и там прямо сказано:

ON_COMMAND макрос используется для обработки командных сообщений, генерируемых меню, кнопками и клавишами ускорения.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]