Почему отключенные кнопки с высокой глубиной цвета в CToolBar - это просто серые поля? - PullRequest
1 голос
/ 01 августа 2011

Я следовал инструкциям из этого вопроса: Большая глубина цвета для значков панели инструментов MFC?

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

Я подозреваю, что CToolBar не знает, как сделать серым поставляемые изображения - кто-нибудь может помочь?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 10 августа 2011

CToolBar фактически принимает до трех списков изображений для обработки нормального, отключенного и выделенного состояний кнопки.

Чтобы выполнить то, что мне нужно - просто нормальные и отключенные состояния кнопок. Мне нужны два изображения. Один с обычными цветными значками, а другой с серыми значками.

Добавьте изображения в качестве ресурсов Bitmap в ваш проект - измените и запишите идентификаторы

Создайте два списка изображений и установите их соответственно: (m_wndToolBar - панель инструментов в моем проекте)

CImageList imgListActive;
CImageList imgListDisabled;
/* Load your CImageLists */
m_wndToolBar.GetToolBarCtrl().SetImageList(&imgListActive);
m_wndToolBar.GetToolBarCtrl().SetDisabledImageList(&imgListDisabled);

Чтобы установить выделенные версии панели инструментов:

CImageList imgListHighlighted;
/* Load your CImageList */
m_wndToolBar.GetToolBarCtrl().SetHotImageList(&imgListHighlighted);

и вуаля!

0 голосов
/ 01 августа 2011

Обычно для получения кнопок высокого цвета и правильно серых изображений необходимы две вещи:

  1. Всегда редактируйте файл .bmp для панели инструментов вне VisualStudio.
  2. Добавить изображения в MFC с помощью вызова CMFCToolBar :: AddToolBarForImageCollection (IDR_MAINFRAME); в вашей реализации InitInstance ().

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

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