MFC: Какой метод используется для установки кнопок панели инструментов в качестве подмножества кнопок общей панели инструментов по умолчанию?

#visual-c #mfc #cmfctoolbar

#visual-c #mfc #cmfctoolbar

Вопрос:

Я хочу добавить все menu items в toolbar , но по умолчанию отображается только их подмножество (без необходимости настройки пользователем). Таким образом, все пункты меню будут иметь значки рядом с ними, но панель инструментов не будет содержать редко используемые элементы, если их не добавят пользователи.

Если возможно, как это делается с CMFCToolBar ?

Ответ №1:

Если возможно, как это делается с помощью CMFCToolBar?

Вы можете определить любое количество «фиктивных» ресурсов панели инструментов в скрипте ресурсов вашей программы, как в примере ниже, где ID_DUMMY1 идентификатор ресурса панели инструментов / растрового изображения (должен быть доступен как для компилятора ресурсов , так и для компилятора C ), а три ID_COMMAND_x идентификатора определяют команды меню, которым соответствуют изображения:

 ID_DUMMY1 BITMAP   L"DummyToolbar.bmp" // 16 x 48 bitmap for three 'buttons
ID_DUMMY1 TOOLBAR  16, 16
{
    BUTTON    ID_COMMAND_A // Three commands corresponding to the three button
    BUTTON    ID_COMMAND_B // images in the above bitmap
    BUTTON    ID_COMMAND_C
}
  

Затем в вашей программе (обычно, сразу после инициализации основного окна фрейма) вы можете вызвать статический член CMFCToolBar класса AddToolBarForImageCollection для загрузки изображений с этих фиктивных панелей инструментов. Следующее загрузит эти изображения в указанный выше ресурс:

     CMFCToolBar::AddToolBarForImageCollection(ID_DUMMY1, ID_DUMMY1);
  

После этого каждый пункт меню с заданными командами будет отображать соответствующее изображение, как определено в фиктивных ресурсах панели инструментов. У вас может быть столько таких ресурсов панели инструментов, сколько требуется, и просто вызывайте AddToolBarForImageCollection для каждого из них.


Примечание: Хотя я использовал один и тот же идентификатор ресурса как для инструментов панели инструментов, так и для растровых ресурсов, вы также можете использовать разные идентификаторы. До тех пор, пока аргументы, указанные в вызове AddToolBarForImageCollection , должным образом согласованы, метод все равно будет работать.

Комментарии:

1. Это здорово, но я не видел способа добавить также большие значки. Есть ли версия Ex, которая включает их?