Отключение настройки только в строке меню MFC

При использовании пакета функций MFC в VS2010 можно ли отключить функцию настройки на CMFCMenuBar, но оставить ее включенной на панелях инструментов? Мы не хотим, чтобы пользователи перетаскивали меню, но они могут свободно менять панели инструментов.

Мы отключили сохранение состояния CMFCMenuBar в реестр при выходе, но меню все еще можно перемещать или удалять во время выполнения.

Обновить:
После ответа xMRi я установил для m_bDisableCustomize значение TRUE в конструкторе производного класса меню. Я заметил, что была проблема с перерисовкой, когда нажатие на меню во время настройки приводило к появлению черных ящиков по всему меню. Это привело меня к http://www.bcgsoft.com/cgi-bin/forum/topic.asp?TOPIC_ID=2643

Я не хотел изменять исходный код MFC, поэтому вместо этого обработал сообщение:

//{{AFX_MSG_MAP(CMyMFCMenuBar)
BEGIN_MESSAGE_MAP(CMyMFCMenuBar, CMFCMenuBar)
ON_WM_LBUTTONDOWN()
ON_WM_CONTEXTMENU()
END_MESSAGE_MAP()
//}}AFX_MSG_MAP

void CMyMFCMenuBar::OnLButtonDown(UINT nFlags, CPoint point)
{
CMFCMenuBar::OnLButtonDown(nFlags, point);
Invalidate();
}

void CMyMFCMenuBar::OnContextMenu(CWnd* pWnd, CPoint pos)
{
if (IsCustomizeMode())
return;
CMFCMenuBar::OnContextMenu(pWnd, pos);
}

и это, кажется, решает проблему перерисовки. Пожалуйста, дайте мне знать, если есть лучший способ исправить проблему с перерисовкой.

0

Решение

Установите для переменной-члена m_bDisableCustomize значение TRUE.

2

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

я хотел бы использовать

EnableCustomizeButton(FALSE, NULL);

после создания окна.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector