Порядок значков в редакторе панели инструментов Visual Studio MFC не обновляется - PullRequest
2 голосов
/ 14 июня 2011

Я пытался создать пользовательскую панель инструментов в проекте MFC в Visual Studio 2010. Я следовал учебному пособию по Sketcher в «Начальном Visual C ++ 2010» Ивана Хортона. Проблема, с которой я сталкиваюсь, заключается в том, что панель инструментов не не обновлять, чтобы отражать порядок и интервал значков, которые я создал.

Я создал небольшой скриншот, чтобы продемонстрировать проблему: MFC toolbar editor example

На заднем плане - редактор панели инструментов Visual Studio с желаемой конфигурацией панели инструментов. На переднем плане собственно приложение, которое не отражает интервал или порядок иконок, которые я разработал. Он отражает добавление НОВЫХ значков, и значки работают нормально, но я просто не могу заставить их переупорядочивать или размещать их соответствующим образом. Они просто добавляются к концу в любом порядке, в котором я их создаю.

Я пробовал элементарные методы перезапуска VS и Windows, но безрезультатно.

Какие-нибудь советы, как заставить его играть красиво? Не имея этого, есть ли где-нибудь вручную просмотреть или отредактировать код, сгенерированный редактором панели инструментов?

Ответы [ 2 ]

3 голосов
/ 14 июня 2011

Для начала, если вы создаете проект MFC SDI / MDI в VS.NET 2005, такой проблемы не возникает. Это происходит в VS.NET 2008 и 2010 годах.

Фактически, ваша перестановка стандартной панели инструментов делает вступающей в силу. Это просто не показывает вам состояние по умолчанию. Чтобы восстановить состояние: нажмите маленькую кнопку со стрелкой в ​​конце панели инструментов -> Добавить или удалить кнопки -> Стандартные -> Сбросить панель инструментов.

Хотя я не уверен на 100%, почему так происходит (такой дизайн или баг), есть способ обойти это, и он работает:

Добавить следующий код в конец CMainFrame::LoadFrame(...)

BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) 
{
...

// Explicitly restore toolbar state
m_wndToolBar.RestoreOriginalstate();

return TRUE;
}

Я рекомендую вам обратиться к инженерам службы поддержки Microsoft, так как в Интернете мало ресурсов.

1 голос
/ 14 июня 2011

Причиной может быть то, что состояние панели инструментов уже загружается из реестра при каждом запуске приложения.Таким образом, фреймворк считывает состояние панели инструментов и добавляет новые кнопки в конец.Есть ли в вашем реестре ключ Workspace, и вы пытались удалить его каждый раз, когда вносите изменения в панель инструментов?Ключ должен находиться в таком месте, как HKEY_CURRENT_USER \ Software \ MyCompany \ MyApp \ Workspace

Значения для MyCompany и MyApp обычно задаются в InitInstance.Постоянный вызов RestoreOriginalState () нарушает код, чтобы разрешить пользовательские изменения панели инструментов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...