Как установить OriginalState динамически созданного CMFCToolbar?
Я создал несколько панелей инструментов динамически в моем приложении MFC
m_cToolBarEx.CreateEx(this, TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC | CBRS_HIDE_INPLACE);
панель инструментов не имеет растрового изображения или идентификатора ресурса. Я использовал функцию InsertButton, чтобы добавить кнопки на моей панели инструментов
Когда я пытаюсь сбросить эту панель инструментов с помощью кнопки " Сбросить панель инструментов" из меню. Панель инструментов не сбрасывается в исходное состояние, выводится только окно сообщения и никакие изменения не восстанавливаются.
Я предполагаю, что проблема в том, когда CMFCToolBar::RestoreOriginalstate()
выполняется условие:
if (m_uiOriginalResID == 0)
{
return FALSE;
}
получает значение true, а функция возвращает значение false, поскольку в m_uiOriginalResID отсутствует идентификатор ресурса.
Есть ли способ загрузить динамически созданную панель инструментов, или я должен унаследовать функцию RestoreOriginalstate и написать свою собственную.
1 ответ
Вы должны переопределить RestoreOriginalstate(), как указано в разделе " Примечание":
Этот метод вызывается, когда пользователь выбирает Сброс в меню настройки. Вы также можете вручную вызвать этот метод для программного сброса состояния строки меню. Этот метод загружает исходное состояние из файла ресурсов.
Переопределите этот метод, если вы хотите выполнить какую-либо обработку, когда пользователь выбирает параметр "Сброс".
Вам также следует переопределить функцию CanBeRestored(), реализация по умолчанию возвращает FALSE, если идентификатор ресурса равен 0.
Вот пример RestoreOriginalstate():
BOOL CLinksBar::RestoreOriginalstate ()
{
RemoveAllButtons ();
InsertButton (CLinkButton (_T("MSDN Home"), _T("http://www.msdn.com")));
InsertButton (CLinkButton (_T("Microsoft Home"), _T("http://www.microsoft.com")));
InsertButton (CLinkButton (_T("Visual C++ Developer Center"), _T("http://msdn2.microsoft.com/visualc/")));
EnableCustomizeButton (TRUE, -1, _T(""));
AdjustLayout ();
Invalidate ();
return TRUE;
}