Как установить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 и написать свою собственную.

0

Решение

Вы должны переопределить 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;
}
0

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

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

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