Класс CBitmapButton
Создает элементы управления "кнопка", на которые вместо текста помещаются растровые изображения.
Синтаксис
class CBitmapButton : public CButton
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CBitmapButton::CBitmapButton | Формирует объект CBitmapButton . |
Открытые методы
Имя | Описание |
---|---|
CBitmapButton::AutoLoad | Связывает кнопку в диалоговом окне с объектом CBitmapButton класса, загружает растровые карты по имени и размер кнопки для соответствия растрового изображения. |
CBitmapButton::LoadBitmaps | Инициализирует объект, загружая один или несколько именованных ресурсов растрового изображения из файла ресурсов приложения и присоединяя растровые изображения к объекту. |
CBitmapButton::SizeToContent | Размер кнопки для размещения растрового изображения. |
Замечания
CBitmapButton
Объекты содержат до четырех растровых изображений, которые содержат изображения для разных состояний, которые могут предполагать: вверх (или нормально), вниз (или выбрано), сосредоточено и отключено. Требуется только первое растровое изображение; другие являются необязательными.
Изображения с растровым рисунком включают границу вокруг изображения, а также сам образ. Граница обычно играет роль в отображении состояния кнопки. Например, растровое изображение для фокусированного состояния обычно похоже на то, что для состояния вверх, но с тиреным прямоугольником от границы или толстой сплошной линии на границе. Растровое изображение для отключенного состояния обычно напоминает изображение для состояния вверх, но имеет более низкую контрастность (например, неактивный или серый выбор меню).
Эти растровые изображения могут иметь любой размер, но все они обрабатываются так же, как если бы они были одинаковыми, как растровое изображение для состояния вверх.
Для различных приложений требуются различные сочетания растровых изображений:
Up | Down | Режим фокусировки | Выключено | Приложение |
---|---|---|---|---|
× | Bitmap | |||
× | × | Кнопка без стиля WS_TABSTOP | ||
× | × | × | × | Кнопка диалогового окна со всеми состояниями |
× | × | × | Кнопка диалогового окна с стилем WS_TABSTOP |
При создании элемента управления bitmap-button задайте стиль BS_OWNERDRAW, чтобы указать, что кнопка нарисована владельцем. Это приводит к отправке WM_MEASUREITEM и WM_DRAWITEM сообщений для кнопки; Платформа обрабатывает эти сообщения и управляет внешним видом кнопки.
Создание элемента управления bitmap-button в клиентской области окна
Создайте одно-четыре растровых изображения для кнопки.
Вызовите функцию Create, чтобы создать элемент управления кнопкой Windows и присоединить его к объекту
CBitmapButton
.Вызовите функцию-член LoadBitmaps, чтобы загрузить ресурсы растрового изображения после создания кнопки растрового изображения.
Включение элемента управления bitmap-button в диалоговое окно
Создайте одно-четыре растровых изображения для кнопки.
Создайте шаблон диалогового окна с кнопкой "Рисование владельца", где должна быть кнопка растрового изображения. Размер кнопки в шаблоне не имеет значения.
Задайте заголовок кнопки, например MYIMAGE, и определите символ для кнопки, например IDC_MYIMAGE.
В скрипте ресурсов приложения предоставьте каждому из изображений, созданных для кнопки идентификатор, созданный путем добавления одной из букв "U", "D", "F" или "X" (для вверх, вниз, фокусировки и отключения) к строке, используемой для заголовка кнопки на шаге 3. Для заголовка кнопки "MYIMAGE", например, идентификаторы будут "MYIMAGEU", "MYIMAGED", "MYIMAGEF", и "MYIMAGEX". Необходимо указать идентификатор растровых изображений в двойных кавычках. В противном случае редактор ресурсов назначит целое число ресурсу, и MFC завершится ошибкой при загрузке образа.
В классе диалогов приложения (производном
CBitmapButton
отCDialog
), добавьте объект-член.CDialog
В подпрограмме OnInitDialog объекта вызовитеCBitmapButton
функцию Автозагрузки объекта, используя в качестве параметров идентификатор элемента управления кнопки иCDialog
указатель объектаthis
.
Если вы хотите обрабатывать сообщения уведомлений Windows, например BN_CLICKED, отправляемые элементом управления bitmap-button в родительский элемент управления (как правило, класс, производный от CDialog
), добавьте в CDialog
производный объект запись карты сообщений и функцию-обработчика сообщений для каждого сообщения. Уведомления, отправленные объектом, совпадают с теми, которые отправляются CBitmapButton
объектом CButton .
Класс CToolBar использует другой подход к кнопкам растрового изображения.
Дополнительные сведения см. в CBitmapButton
разделе "Элементы управления".
Иерархия наследования
CBitmapButton
Требования
Заголовок: afxext.h
CBitmapButton::AutoLoad
Связывает кнопку в диалоговом окне с объектом CBitmapButton
класса, загружает растровые карты по имени и размер кнопки для соответствия растрового изображения.
BOOL AutoLoad(
UINT nID,
CWnd* pParent);
Параметры
nID
Идентификатор элемента управления кнопки.
pParent
Указатель на объект, принадлежащий кнопке.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Используйте функцию для инициализации кнопки "Рисование AutoLoad
владельца" в диалоговом окне в виде кнопки растрового изображения. Инструкции по использованию этой функции приведены в примечаниях для CBitmapButton
класса.
Пример
CBitmapButton myButton;
// Initialize the owner-drawn button with the id IDC_MYBUTTON as a bitmap
// button. This code is used in the OnInitDialog handler of my dialog.
myButton.AutoLoad(IDC_MYBUTTON, this);
CBitmapButton::CBitmapButton
Создает объект CBitmapButton
.
CBitmapButton();
Замечания
После создания объекта C++ CBitmapButton
вызовите CButton::Create , чтобы создать элемент управления кнопкой Windows и присоединить его к объекту CBitmapButton
.
Пример
// Declare a bitmap button object on the stack.
CBitmapButton myButton;
// Declare a bitmap button object on the heap.
CBitmapButton *pmyButton = new CBitmapButton;
CBitmapButton::LoadBitmaps
Используйте эту функцию, если требуется загрузить растровые изображения, определяемые именами ресурсов или номерами идентификаторов, или если вы не можете использовать AutoLoad
функцию, так как, например, вы создаете кнопку растрового изображения, которая не входит в диалоговое окно.
BOOL LoadBitmaps(
LPCTSTR lpszBitmapResource,
LPCTSTR lpszBitmapResourceSel = NULL,
LPCTSTR lpszBitmapResourceFocus = NULL,
LPCTSTR lpszBitmapResourceDisabled = NULL);
BOOL LoadBitmaps(
UINT nIDBitmapResource,
UINT nIDBitmapResourceSel = 0,
UINT nIDBitmapResourceFocus = 0,
UINT nIDBitmapResourceDisabled = 0);
Параметры
lpszBitmapResource
Указывает на строку, завершающую значение NULL, которая содержит имя растрового изображения для обычного или "вверх" состояния кнопки растрового изображения. Обязательный.
lpszBitmapResourceSel
Указывает на строку, завершающую значение NULL, содержащую имя растрового изображения для выбранного или нижнего состояния кнопки. Может иметь значение NULL.
lpszBitmapResourceFocus
Указывает на строку, завершающую значение NULL, содержащую имя растрового изображения для состояния фокуса кнопки. Может иметь значение NULL.
lpszBitmapResourceDisabled
Указывает на строку, завершающую значение NULL, содержащую имя растрового изображения для отключенного состояния кнопки растрового изображения. Может иметь значение NULL.
nIDBitmapResource
Указывает номер идентификатора ресурса растрового изображения для обычного или "вверх" состояния кнопки растрового изображения. Обязательный.
nIDBitmapResourceSel
Указывает номер идентификатора ресурса растрового изображения для выбранного или нижнего состояния кнопки растрового изображения. Может быть 0.
nIDBitmapResourceFocus
Указывает номер идентификатора ресурса растрового изображения для состояния фокусировки кнопки. Может быть 0.
nIDBitmapResourceDisabled
Указывает номер идентификатора ресурса растрового изображения для отключенного состояния кнопки растрового изображения. Может быть 0.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Пример
// Create the bitmap button (must include the BS_OWNERDRAW style).
pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
CRect(10, 10, 100, 100), pParentWnd, 1);
// Load the bitmaps for this button.
pmyButton->LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS, IDB_DISABLE);
CBitmapButton::SizeToContent
Вызовите эту функцию для изменения размера кнопки растрового изображения до размера растрового изображения.
void SizeToContent();
Пример
CBitmapButton *pmyButton = new CBitmapButton();
// Create the bitmap button (must include the BS_OWNERDRAW style).
pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
CRect(10, 10, 100, 100), pParentWnd, 1);
// Load the bitmaps for this button.
pmyButton->LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS, IDB_DISABLE);
// Resize the button to be the size of the bitmaps.
pmyButton->SizeToContent();