Вы должны использовать функцию CCmdUI::SetCheck
, чтобы добавить флажок к пункту меню, с помощью функции обработчика ON_UPDATE_COMMAND_UI
и ON_COMMAND
обработчик для изменения состояния флажка. Этот метод работает как для главного меню вашего приложения, так и для любых всплывающих меню, которые вы можете создать.
Предполагая, что у вас есть приложение MDI или SDI MFC, вы должны сначала решить, куда вы хотите добавить функции обработчика, например, в приложении, основном фрейме, документе или классе представления. Это зависит от того, для чего будет использоваться флаг: если он контролирует поведение приложения, поместите его в класс приложения; если он управляет поведением, зависящим от вида, поместите его в класс представления и т. д.
(Кроме того, я бы рекомендовал оставить свойство отмеченным пункта меню в редакторе ресурсов установленным на False .)
Вот пример использования класса представления для управления состоянием флажка пункта меню ID_MY_COMMAND
:
// MyView.h
class CMyView : public CView
{
private:
BOOL m_Flag;
afx_msg void OnMyCommand();
afx_msg void OnUpdateMyCommand(CCmdUI* pCmdUI);
DECLARE_MESSAGE_MAP()
};
// MyView.cpp
BEGIN_MESSAGE_MAP(CMyView, CView)
ON_COMMAND(ID_MY_COMMAND, OnMyCommand)
ON_UPDATE_COMMAND_UI(ID_MY_COMMAND, OnUpdateMyCommand)
END_MESSAGE_MAP()
void CMyView::OnMyCommand()
{
m_Flag = !m_Flag; // Toggle the flag
// Use the new flag value.
}
void CMyView::OnUpdateMyCommand(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_Flag);
}
Необходимо убедиться, что переменная-член m_Flag
инициализирована, например, в конструкторе CMyView
или функции OnInitialUpdate
.
Надеюсь, это поможет!