Поделиться через


Класс 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 в клиентской области окна

  1. Создайте одно-четыре растровых изображения для кнопки.

  2. Создайте объект CBitmapButton.

  3. Вызовите функцию Create, чтобы создать элемент управления кнопкой Windows и присоединить его к объектуCBitmapButton.

  4. Вызовите функцию-член LoadBitmaps, чтобы загрузить ресурсы растрового изображения после создания кнопки растрового изображения.

Включение элемента управления bitmap-button в диалоговое окно

  1. Создайте одно-четыре растровых изображения для кнопки.

  2. Создайте шаблон диалогового окна с кнопкой "Рисование владельца", где должна быть кнопка растрового изображения. Размер кнопки в шаблоне не имеет значения.

  3. Задайте заголовок кнопки, например MYIMAGE, и определите символ для кнопки, например IDC_MYIMAGE.

  4. В скрипте ресурсов приложения предоставьте каждому из изображений, созданных для кнопки идентификатор, созданный путем добавления одной из букв "U", "D", "F" или "X" (для вверх, вниз, фокусировки и отключения) к строке, используемой для заголовка кнопки на шаге 3. Для заголовка кнопки "MYIMAGE", например, идентификаторы будут "MYIMAGEU", "MYIMAGED", "MYIMAGEF", и "MYIMAGEX". Необходимо указать идентификатор растровых изображений в двойных кавычках. В противном случае редактор ресурсов назначит целое число ресурсу, и MFC завершится ошибкой при загрузке образа.

  5. В классе диалогов приложения (производном CBitmapButton отCDialog), добавьте объект-член.

  6. CDialog В подпрограмме OnInitDialog объекта вызовите CBitmapButton функцию Автозагрузки объекта, используя в качестве параметров идентификатор элемента управления кнопки и CDialog указатель объектаthis.

Если вы хотите обрабатывать сообщения уведомлений Windows, например BN_CLICKED, отправляемые элементом управления bitmap-button в родительский элемент управления (как правило, класс, производный от CDialog), добавьте в CDialogпроизводный объект запись карты сообщений и функцию-обработчика сообщений для каждого сообщения. Уведомления, отправленные объектом, совпадают с теми, которые отправляются CBitmapButton объектом CButton .

Класс CToolBar использует другой подход к кнопкам растрового изображения.

Дополнительные сведения см. в CBitmapButtonразделе "Элементы управления".

Иерархия наследования

CObject

CCmdTarget

CWnd

CButton

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();

См. также

Пример CTRLTEST MFC
Класс CButton
Диаграмма иерархии