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


Класс CButton

Предоставляет функциональные возможности кнопочных элементов управления Windows.

Синтаксис

class CButton : public CWnd

Участники

Открытые конструкторы

Имя Описание
CButton::CButton Формирует объект CButton.

Открытые методы

Имя Описание
CButton::Create Создает элемент управления кнопки Windows и присоединяет его к объекту CButton .
CButton::D rawItem Переопределите, чтобы нарисовать объект, нарисованный CButton владельцем.
CButton::GetBitmap Извлекает дескриптор растрового изображения, заданного ранее с помощью SetBitmap.
CButton::GetButtonStyle Извлекает сведения о стиле элемента управления кнопкой.
CButton::GetCheck Извлекает состояние проверки элемента управления кнопкой.
CButton::GetCursor Извлекает дескриптор изображения курсора, заданного ранее с помощью SetCursor.
CButton::GetIcon Извлекает дескриптор ранее заданного значка с помощью SetIcon.
CButton::GetIdealSize Получает идеальный размер элемента управления кнопкой.
CButton::GetImageList Извлекает список изображений элемента управления кнопкой.
CButton::GetNote Извлекает компонент заметки текущего элемента управления командной ссылки.
CButton::GetNoteLength Извлекает длину текста заметки для текущего элемента управления командной ссылки.
CButton::GetSplitGlyph Извлекает глиф, связанный с текущим элементом управления кнопкой разделения.
CButton::GetSplitImageList Извлекает список изображений для текущего элемента управления "Разделить кнопку".
CButton::GetSplitInfo Извлекает сведения, определяющие текущий элемент управления кнопкой разделения.
CButton::GetSplitSize Извлекает ограничивающий прямоугольник раскрывающегося списка текущего элемента управления "Разделить кнопку".
CButton::GetSplitStyle Извлекает стили разделенных кнопок, определяющие текущий элемент управления "Разделить кнопку".
CButton::GetState Извлекает состояние проверки, состояние выделения и состояние фокуса элемента управления кнопкой.
CButton::GetTextMargin Извлекает текстовое поле элемента управления button.
CButton::SetBitmap Указывает растровое изображение, отображаемое на кнопке.
CButton::SetButtonStyle Изменяет стиль кнопки.
CButton::SetCheck Задает состояние проверки элемента управления кнопкой.
CButton::SetCursor Указывает изображение курсора, отображаемое на кнопке.
CButton::SetDropDownState Задает раскрывающееся состояние текущего элемента управления "Разделить кнопку".
CButton::SetIcon Указывает значок, отображаемый на кнопке.
CButton::SetImageList Задает список изображений элемента управления кнопкой.
CButton::SetNote Задает примечание для текущего элемента управления командной ссылки.
CButton::SetSplitGlyph Связывает указанный глиф с текущим элементом управления "Разделить кнопку".
CButton::SetSplitImageList Связывает список изображений с текущим элементом управления "Разделить кнопку".
CButton::SetSplitInfo Указывает сведения, определяющие текущий элемент управления кнопкой разделения.
CButton::SetSplitSize Задает ограничивающий прямоугольник раскрывающегося элемента управления текущей кнопки разделения.
CButton::SetSplitStyle Задает стиль текущего элемента управления "Разделить кнопку".
CButton::SetState Задает состояние выделения элемента управления кнопкой.
CButton::SetTextMargin Задает текстовое поле элемента управления кнопкой.

Замечания

Элемент управления кнопкой — это небольшое прямоугольное дочернее окно, которое можно щелкнуть и отключить. Кнопки могут использоваться отдельно или в группах и могут быть помечены или отображаться без текста. Кнопка обычно изменяет внешний вид, когда пользователь щелкает его.

Типичными кнопками являются флажок, переключатель и pushbutton. Объект CButton может стать любым из них в соответствии со стилем кнопки, указанным при инициализации функцией create member.

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

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

Построение может быть одношаговным процессом в классе, производным от CButton. Напишите конструктор для производного класса и вызов Create из конструктора.

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

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

ON_Notification ( id, memberFxn )

где идентификатор указывает идентификатор дочернего окна элемента управления, отправляющего уведомление, и memberFxn — это имя родительской функции-члена, записанной для обработки уведомления.

Прототип функции родительского объекта выглядит следующим образом:

afx_msg void memberFxn();

Возможные записи карты сообщений приведены следующим образом:

Запись карты Отправляется родителю, когда...
ON_BN_CLICKED Пользователь нажимает кнопку.
ON_BN_DOUBLECLICKED Пользователь дважды щелкает кнопку.

При создании CButton объекта из ресурса CButton диалогового окна объект автоматически уничтожается, когда пользователь закрывает диалоговое окно.

При создании CButton объекта в окне может потребоваться его уничтожить. Если вы создаете CButton объект в куче с помощью new функции, необходимо вызвать delete объект, чтобы уничтожить его, когда пользователь закрывает элемент управления кнопкой Windows. Если вы создаете CButton объект в стеке или внедряется в родительский диалоговый объект, он автоматически уничтожается.

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

CObject

CCmdTarget

CWnd

CButton

Требования

Заголовок: afxwin.h

CButton::CButton

Формирует объект CButton.

CButton();

Пример

// Declare a button object.
CButton myButton;

CButton::Create

Создает элемент управления кнопки Windows и присоединяет его к объекту CButton .

virtual BOOL Create(
    LPCTSTR lpszCaption,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Параметры

lpszCaption
Задает текст элемента управления кнопкой.

dwStyle
Задает стиль элемента управления кнопкой. Примените к кнопке любое сочетание стилей кнопок.

rect
Задает размер и позицию элемента управления кнопкой. Это может быть CRect объект или RECT структура.

pParentWnd
Указывает родительское окно элемента управления кнопки, как правило, .CDialog Он не должен иметь значение NULL.

nID
Указывает идентификатор элемента управления кнопки.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Вы создаете CButton объект на двух шагах. Сначала вызовите конструктор и вызов Create, который создает элемент управления кнопкой Windows и присоединяет его к объекту CButton .

Если задан стиль WS_VISIBLE, Windows отправляет все сообщения, необходимые для активации и отображения кнопки.

Примените следующие стили окон к элементу управления кнопкой:

  • WS_CHILD Always

  • WS_VISIBLE обычно

  • WS_DISABLED редко

  • WS_GROUP Группирование элементов управления

  • WS_TABSTOP Включение кнопки в порядок вкладок

Пример

CButton myButton1, myButton2, myButton3, myButton4;

// Create a push button.
myButton1.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                 CRect(10, 10, 100, 30), pParentWnd, 1);

// Create a radio button.
myButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
                 CRect(10, 40, 100, 70), pParentWnd, 2);

// Create an auto 3-state button.
myButton3.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
                 CRect(10, 70, 100, 100), pParentWnd, 3);

// Create an auto check box.
myButton4.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
                 CRect(10, 100, 100, 130), pParentWnd, 4);

CButton::D rawItem

Вызывается платформой при изменении визуального аспекта нарисованной кнопки владельца.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Параметры

lpDrawItemStruct
Длинный указатель на структуру DRAWITEMSTRUCT . Структура содержит сведения о рисуемом элементе и типе необходимого документа.

Замечания

Нарисованная владельцем кнопка содержит набор стилей BS_OWNERDRAW. Переопределите эту функцию-член, чтобы реализовать рисование для объекта, нарисованного CButton владельцем. Приложение должно восстановить все объекты графического интерфейса устройства (GDI), выбранные для контекста отображения, предоставленного в lpDrawItemStruct , перед завершением функции-члена.

См. также значения стилей BS_ .

Пример

// NOTE: CMyButton is a class derived from CButton. The CMyButton
// object was created as follows:
//
// CMyButton myButton;
// myButton.Create(_T("My button"),
//      WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW,
//      CRect(10,10,100,30), pParentWnd, 1);
//

// This example implements the DrawItem method for a CButton-derived
// class that draws the button's text using the color red.
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
   UINT uStyle = DFCS_BUTTONPUSH;

   // This code only works with buttons.
   ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);

   // If drawing selected, add the pushed style to DrawFrameControl.
   if (lpDrawItemStruct->itemState & ODS_SELECTED)
      uStyle |= DFCS_PUSHED;

   // Draw the button frame.
   ::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem,
                      DFC_BUTTON, uStyle);

   // Get the button's text.
   CString strText;
   GetWindowText(strText);

   // Draw the button text using the text color red.
   COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, RGB(255, 0, 0));
   ::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(),
              &lpDrawItemStruct->rcItem, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
   ::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
}

CButton::GetBitmap

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

HBITMAP GetBitmap() const;

Возвращаемое значение

Дескриптор растрового изображения. ЗНАЧЕНИЕ NULL, если ранее не указано растровое изображение.

Пример

CButton myBitmapButton;

// Create a bitmap button.
myBitmapButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_BITMAP,
                      CRect(10, 10, 60, 50), pParentWnd, 1);

// If no bitmap is defined for the button, define the bitmap to the
// system close bitmap.
if (myBitmapButton.GetBitmap() == NULL)
   myBitmapButton.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));

CButton::GetButtonStyle

Извлекает сведения о стиле элемента управления кнопкой.

UINT GetButtonStyle() const;

Возвращаемое значение

Возвращает стили кнопки для этого CButton объекта. Эта функция возвращает только значения стиля BS_ , а не другие стили окон.

Пример

CButton myRadioButton;

// Create a radio button.
myRadioButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
                     CRect(10, 10, 100, 30), pParentWnd, 1);

// Change the button style to use one of the "auto" styles; for
// push button, change to def push button.
UINT uStyle = myRadioButton.GetButtonStyle();
if (uStyle == BS_PUSHBUTTON)
   uStyle = BS_DEFPUSHBUTTON;
else if (uStyle == BS_RADIOBUTTON)
   uStyle = BS_AUTORADIOBUTTON;
else if (uStyle == BS_CHECKBOX)
   uStyle = BS_AUTOCHECKBOX;
else if (uStyle == BS_3STATE)
   uStyle = BS_AUTO3STATE;

// Change the button style to the one wanted.
myRadioButton.SetButtonStyle(uStyle);

CButton::GetCheck

Извлекает состояние флажка переключателя или флажка.

int GetCheck() const;

Возвращаемое значение

Возвращаемое значение элемента управления кнопкой, созданного с помощью стиля BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIOBUTTON или BS_3STATE, является одним из следующих значений:

Значение Значение
BST_UNCHECKED Состояние кнопки снято.
BST_CHECKED Проверяется состояние кнопки.
BST_INDETERMINATE Состояние кнопки является неопределенным (применяется только в том случае, если кнопка имеет стиль BS_3STATE или BS_AUTO3STATE).

Если кнопка имеет любой другой стиль, возвращаемое значение BST_UNCHECKED.

Пример

CButton myA3Button;

// Create an auto 3-state button.
myA3Button.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
                  CRect(10, 10, 100, 30), pParentWnd, 1);

// Set the check state to the next state
// (i.e. BST_UNCHECKED changes to BST_CHECKED
// BST_CHECKED changes to BST_INDETERMINATE
// BST_INDETERMINATE changes to BST_UNCHECKED).
myA3Button.SetCheck(((myA3Button.GetCheck() + 1) % 3));

CButton::GetCursor

Вызовите эту функцию-член, чтобы получить дескриптор курсора, ранее заданный с SetCursor, связанный с кнопкой.

HCURSOR GetCursor();

Возвращаемое значение

Дескриптор изображения курсора. ЗНАЧЕНИЕ NULL, если ранее курсор не указан.

Пример

CButton myIconButton;

// Create an icon button.
myIconButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
                    CRect(10, 10, 60, 50), pParentWnd, 1);

// If no image is defined for the button, define the image to the
// system arrow and question mark cursor.
if (myIconButton.GetCursor() == NULL)
   myIconButton.SetCursor(::LoadCursor(NULL, IDC_HELP));

CButton::GetIcon

Вызовите эту функцию-член, чтобы получить дескриптор значка, ранее заданный с SetIcon, связанный с кнопкой.

HICON GetIcon() const;

Возвращаемое значение

Дескриптор для значка. ЗНАЧЕНИЕ NULL, если ранее не указан значок.

Пример

CButton myIconButton2;

// Create an icon button.
myIconButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
                     CRect(10, 10, 60, 50), pParentWnd, 1);

// If no icon is defined for the button, define the icon to the
// system error icon.
if (myIconButton2.GetIcon() == NULL)
   myIconButton2.SetIcon(::LoadIcon(NULL, IDI_ERROR));

CButton::GetIdealSize

Извлекает идеальный размер элемента управления кнопкой.

BOOL GetIdealSize(SIZE* psize);

Параметры

psize
Указатель на текущий размер кнопки.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Эта функция-член эмулирует функциональные возможности сообщения BCM_GETIDEALSIZE, как описано в разделе "Кнопки " пакета SDK для Windows.

CButton::GetImageList

Вызовите этот метод, чтобы получить список изображений из элемента управления кнопкой.

BOOL GetImageList(PBUTTON_IMAGELIST pbuttonImagelist);

Параметры

pbuttonImagelist
Указатель на список CButton изображений объекта.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Эта функция-член эмулирует функциональные возможности сообщения BCM_GETIMAGELIST, как описано в разделе "Кнопки " пакета SDK для Windows.

CButton::GetNote

Извлекает текст заметки, связанный с текущим элементом управления командной ссылкой.

CString GetNote() const;

BOOL GetNote(
    LPTSTR lpszNote,
    UINT* cchNote) const;

Параметры

lpszNote
[out] Указатель на буфер, который вызывающий отвечает за выделение и освобождение. Если возвращаемое значение равно TRUE, буфер содержит текст заметки, связанный с текущим элементом управления командной ссылкой; в противном случае буфер не изменяется.

cchNote
[in, out] Указатель на переменную целого числа без знака. При вызове этого метода переменная содержит размер буфера, указанного параметром lpszNote . При возврате этого метода, если возвращаемое значение равно TRUE, переменная содержит размер заметки, связанной с текущим элементом управления командной ссылкой. Если возвращаемое значение равно FALSE, переменная содержит размер буфера, необходимый для хранения заметки.

Возвращаемое значение

В первой перегрузке объект CString, содержащий текст заметки, связанный с текущим элементом управления командной ссылки.

–или–

Во второй перегрузке значение TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Используйте этот метод только с элементами управления, стиль кнопки которых BS_COMMANDLINK или BS_DEFCOMMANDLINK.

Этот метод отправляет сообщение BCM_GETNOTE , описанное в пакете SDK для Windows.

CButton::GetNoteLength

Извлекает длину текста заметки для текущего элемента управления командной ссылки.

UINT GetNoteLength() const;

Возвращаемое значение

Длина текста заметки в 16-разрядных символах Юникода для текущего элемента управления командной ссылки.

Замечания

Используйте этот метод только с элементами управления, стиль кнопки которых BS_COMMANDLINK или BS_DEFCOMMANDLINK.

Этот метод отправляет сообщение BCM_GETNOTELENGTH , описанное в пакете SDK для Windows.

CButton::GetSplitGlyph

Извлекает глиф, связанный с текущим элементом управления кнопкой разделения.

TCHAR GetSplitGlyph() const;

Возвращаемое значение

Символ глифа, связанный с текущим элементом управления кнопкой разделения.

Замечания

Глиф — это физическое представление символа в определенном шрифте. Например, элемент управления разделенной кнопкой может быть украшен глифом символа флажка Юникода (U+2713).

Используйте этот метод только с элементами управления, стиль кнопки которых BS_SPLITBUTTON или BS_DEFSPLITBUTTON.

Этот метод инициализирует mask элемент структуры BUTTON_SPLITINFO с флагом BCSIF_GLYPH, а затем отправляет эту структуру в сообщении BCM_GETSPLITINFO, описанном в пакете SDK для Windows. Когда функция сообщения возвращается, этот метод извлекает глиф из himlGlyph элемента структуры.

CButton::GetSplitImageList

Извлекает список изображений для текущего элемента управления "Разделить кнопку".

CImageList* GetSplitImageList() const;

Возвращаемое значение

Указатель на объект CImageList .

Замечания

Используйте этот метод только с элементами управления, стиль кнопки которых BS_SPLITBUTTON или BS_DEFSPLITBUTTON.

Этот метод инициализирует mask элемент структуры BUTTON_SPLITINFO с флагом BCSIF_IMAGE, а затем отправляет эту структуру в сообщении BCM_GETSPLITINFO, описанном в пакете SDK для Windows. Когда функция сообщения возвращается, этот метод извлекает список изображений из himlGlyph элемента структуры.

CButton::GetSplitInfo

Извлекает параметры, определяющие, как Windows рисует текущий элемент управления кнопкой разделения.

BOOL GetSplitInfo(PBUTTON_SPLITINFO pInfo) const;

Параметры

pInfo
[out] Указатель на структуру BUTTON_SPLITINFO , которая получает сведения о текущем элементе управления "Разделить кнопку". Вызывающий объект отвечает за выделение структуры.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Используйте этот метод только с элементами управления, стиль кнопки которых BS_SPLITBUTTON или BS_DEFSPLITBUTTON.

Этот метод отправляет сообщение BCM_GETSPLITINFO , описанное в пакете SDK для Windows.

CButton::GetSplitSize

Извлекает ограничивающий прямоугольник раскрывающегося списка текущего элемента управления "Разделить кнопку".

BOOL GetSplitSize(LPSIZE pSize) const;

Параметры

pSize
[out] Указатель на структуру SIZE , которая получает описание прямоугольника.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Используйте этот метод только с элементами управления, стиль кнопки которых BS_SPLITBUTTON или BS_DEFSPLITBUTTON.

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

Этот метод инициализирует mask элемент структуры BUTTON_SPLITINFO с флагом BCSIF_SIZE, а затем отправляет эту структуру в сообщении BCM_GETSPLITINFO, описанном в пакете SDK для Windows. Когда функция сообщения возвращается, этот метод извлекает ограничивающий прямоугольник из size элемента структуры.

CButton::GetSplitStyle

Извлекает стили разделенных кнопок, определяющие текущий элемент управления "Разделить кнопку".

UINT GetSplitStyle() const;

Возвращаемое значение

Побитовое сочетание стилей разделенных кнопок. Дополнительные сведения см. в uSplitStyle элементе структуры BUTTON_SPLITINFO .

Замечания

Используйте этот метод только с элементами управления, стиль кнопки которых BS_SPLITBUTTON или BS_DEFSPLITBUTTON.

Стили кнопки разделения указывают выравнивание, пропорции и графический формат, с помощью которого Windows рисует значок разделенной кнопки.

Этот метод инициализирует mask элемент структуры BUTTON_SPLITINFO с флагом BCSIF_STYLE, а затем отправляет эту структуру в сообщении BCM_GETSPLITINFO, описанном в пакете SDK для Windows. Когда функция сообщения возвращается, этот метод извлекает стили разделенных кнопок из uSplitStyle элемента структуры.

CButton::GetState

Извлекает состояние элемента управления кнопкой.

UINT GetState() const;

Возвращаемое значение

Битовое поле, содержащее сочетание значений, указывающих текущее состояние элемента управления кнопкой. В следующей таблице перечислены возможные значения.

Состояние кнопки значение Описание
BST_UNCHECKED 0x0000 Начальное состояние.
BST_CHECKED 0x0001 Проверяется элемент управления кнопкой.
BST_INDETERMINATE 0x0002 Состояние неопределено (возможно только в том случае, если элемент управления кнопкой имеет три состояния).
BST_PUSHED 0x0004 Элемент управления кнопкой нажимается.
BST_FOCUS 0x0008 Элемент управления кнопкой имеет фокус.

Замечания

Элемент управления кнопкой с стилем кнопки BS_3STATE или BS_AUTO3STATE создает флажок с третьим состоянием, которое называется неопределенным состоянием. Неопределенное состояние указывает, что флажок не установлен и не установлен.

Пример

CButton myPushButton;

// Create a push button.
myPushButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                    CRect(10, 10, 100, 30), pParentWnd, 1);

// Invert the highlight state of the button.
myPushButton.SetState(!(myPushButton.GetState() & 0x0004));

CButton::GetTextMargin

Вызовите этот метод, чтобы получить текстовое поле CButton объекта.

BOOL GetTextMargin(RECT* pmargin);

Параметры

pmargin
Указатель на текстовое поле CButton объекта.

Возвращаемое значение

Возвращает текстовое поле. Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Эта функция-член эмулирует функциональные возможности сообщения BCM_GETTEXTMARGIN, как описано в разделе "Кнопки " пакета SDK для Windows.

CButton::SetBitmap

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

HBITMAP SetBitmap(HBITMAP hBitmap);

Параметры

hBitmap
Дескриптор растрового изображения.

Возвращаемое значение

Дескриптор растрового изображения, ранее связанного с кнопкой.

Замечания

Растровое изображение будет автоматически помещено на лицо кнопки, по центру по умолчанию. Если растровое изображение слишком велико для кнопки, оно будет обрезано на обеих сторонах. Можно выбрать другие параметры выравнивания, в том числе следующие:

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

В отличие от CBitmapButton, который использует четыре растровых изображения на кнопку, SetBitmap использует только одно растровое изображение на кнопку. При нажатии кнопки точечный рисунок отображается для перемещения вниз и вправо.

Вы несете ответственность за освобождение растрового изображения при завершении работы с ним.

Пример

CButton myBitmapButton;

// Create a bitmap button.
myBitmapButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_BITMAP,
                      CRect(10, 10, 60, 50), pParentWnd, 1);

// If no bitmap is defined for the button, define the bitmap to the
// system close bitmap.
if (myBitmapButton.GetBitmap() == NULL)
   myBitmapButton.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));

CButton::SetButtonStyle

Изменяет стиль кнопки.

void SetButtonStyle(
    UINT nStyle,
    BOOL bRedraw = TRUE);

Параметры

nStyle
Задает стиль кнопки.

bRedraw
Указывает, требуется ли перезапись кнопки. Ненулевое значение перерисовывает кнопку. Значение 0 не перерисовывает кнопку. Кнопка перезабрана по умолчанию.

Замечания

Используйте функцию-член, GetButtonStyle чтобы получить стиль кнопки. Слово нижнего порядка стиля полной кнопки — это стиль, зависящий от кнопки.

Пример

CButton myRadioButton;

// Create a radio button.
myRadioButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
                     CRect(10, 10, 100, 30), pParentWnd, 1);

// Change the button style to use one of the "auto" styles; for
// push button, change to def push button.
UINT uStyle = myRadioButton.GetButtonStyle();
if (uStyle == BS_PUSHBUTTON)
   uStyle = BS_DEFPUSHBUTTON;
else if (uStyle == BS_RADIOBUTTON)
   uStyle = BS_AUTORADIOBUTTON;
else if (uStyle == BS_CHECKBOX)
   uStyle = BS_AUTOCHECKBOX;
else if (uStyle == BS_3STATE)
   uStyle = BS_AUTO3STATE;

// Change the button style to the one wanted.
myRadioButton.SetButtonStyle(uStyle);

CButton::SetCheck

Задает или сбрасывает состояние флажка переключателя или флажка.

void SetCheck(int nCheck);

Параметры

nCheck
Указывает состояние проверки. Возможные значения этого параметра:

Значение Значение
BST_UNCHECKED Установите состояние кнопки для отмены.
BST_CHECKED Задайте состояние кнопки для проверки.
BST_INDETERMINATE Задайте для состояния кнопки неопределенное значение. Это значение можно использовать только в том случае, если кнопка имеет стиль BS_3STATE или BS_AUTO3STATE.

Замечания

Эта функция-член не влияет на pushbutton.

Пример

CButton myA3Button;

// Create an auto 3-state button.
myA3Button.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
                  CRect(10, 10, 100, 30), pParentWnd, 1);

// Set the check state to the next state
// (i.e. BST_UNCHECKED changes to BST_CHECKED
// BST_CHECKED changes to BST_INDETERMINATE
// BST_INDETERMINATE changes to BST_UNCHECKED).
myA3Button.SetCheck(((myA3Button.GetCheck() + 1) % 3));

CButton::SetCursor

Вызовите эту функцию-член, чтобы связать новый курсор с кнопкой.

HCURSOR SetCursor(HCURSOR hCursor);

Параметры

hCursor
Дескриптор курсора.

Возвращаемое значение

Дескриптор курсора, ранее связанный с кнопкой.

Замечания

Курсор автоматически помещается на лицо кнопки, по центру по умолчанию. Если курсор слишком велик для кнопки, он будет обрезана на обеих сторонах. Можно выбрать другие параметры выравнивания, в том числе следующие:

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

В отличие от CBitmapButton, который использует четыре растровых изображения на кнопку, SetCursor использует только один курсор на кнопку. При нажатии кнопки курсор отображается для перемещения вниз и вправо.

Пример

CButton myIconButton;

// Create an icon button.
myIconButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
                    CRect(10, 10, 60, 50), pParentWnd, 1);

// If no image is defined for the button, define the image to the
// system arrow and question mark cursor.
if (myIconButton.GetCursor() == NULL)
   myIconButton.SetCursor(::LoadCursor(NULL, IDC_HELP));

CButton::SetDropDownState

Задает раскрывающееся состояние текущего элемента управления "Разделить кнопку".

BOOL SetDropDownState(BOOL fDropDown);

Параметры

fDropDown
[in] ЗНАЧЕНИЕ TRUE для задания состояния BST_DROPDOWNPUSHED; в противном случае — ЗНАЧЕНИЕ FALSE.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Элемент управления разделенной кнопкой имеет стиль BS_SPLITBUTTON или BS_DEFSPLITBUTTON и состоит из кнопки и стрелки раскрывающегося списка справа. Дополнительные сведения см. в разделе "Стили кнопок". Как правило, раскрывающееся меню устанавливается, когда пользователь щелкает стрелку раскрывающегося списка. Используйте этот метод для программного задания раскрывающегося списка элемента управления. Стрелка раскрывающегося списка затеняется, чтобы указать состояние.

Этот метод отправляет сообщение BCM_SETDROPDOWNSTATE , описанное в пакете SDK для Windows.

Пример

Первый пример кода определяет переменную, m_splitButtonкоторая используется для программного доступа к элементу управления разделенной кнопки. Эта переменная используется в следующем примере.

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

Следующий пример кода задает состояние элемента управления "Разделенная кнопка", чтобы указать, что стрелка раскрывающегося списка будет отправлена.

/* Set the state of the split button control to indicate that 
   the drop-down arrow is pushed. The arrow is drawn shaded to 
   indicate the state.
   */
m_splitButton.SetDropDownState(TRUE);

CButton::SetElevationRequired

Задает состояние текущего элемента управления elevation requiredкнопкой, которое необходимо для отображения значка повышенной безопасности.

BOOL SetElevationRequired(BOOL fElevationRequired);

Параметры

fElevationRequired
[in] Значение TRUE для задания elevation required состояния; в противном случае — ЗНАЧЕНИЕ FALSE.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Если для выполнения действия требуется разрешение на повышенный уровень безопасности для кнопки или элемента управления командой, задайте для этого элемента управления elevation required состояние. Затем в Windows отображается значок щита контроля учетных записей пользователей (UAC) в элементе управления. Дополнительные сведения см. в разделе Контроль учетных записей.

Этот метод отправляет сообщение BCM_SETSHIELD , описанное в пакете SDK для Windows.

CButton::SetIcon

Вызовите эту функцию-член, чтобы связать новый значок с кнопкой.

HICON SetIcon(HICON hIcon);

Параметры

hIcon
Дескриптор значка.

Возвращаемое значение

Дескриптор значка, ранее связанного с кнопкой.

Замечания

Значок будет автоматически помещен на лицо кнопки, по центру по умолчанию. Если значок слишком велик для кнопки, он будет обрезана на обеих сторонах. Можно выбрать другие параметры выравнивания, в том числе следующие:

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

В отличие от CBitmapButton, который использует четыре растровых изображения на кнопку, SetIcon использует только один значок на кнопку. При нажатии кнопки значок отображается для перемещения вниз и вправо.

Пример

CButton myIconButton2;

// Create an icon button.
myIconButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
                     CRect(10, 10, 60, 50), pParentWnd, 1);

// If no icon is defined for the button, define the icon to the
// system error icon.
if (myIconButton2.GetIcon() == NULL)
   myIconButton2.SetIcon(::LoadIcon(NULL, IDI_ERROR));

CButton::SetImageList

Вызовите этот метод, чтобы задать список CButton изображений объекта.

BOOL SetImageList(PBUTTON_IMAGELIST pbuttonImagelist);

Параметры

pbuttonImagelist
Указатель на новый список изображений.

Возвращаемое значение

Возвращает значение TRUE при успешном выполнении, false при сбое.

Замечания

Эта функция-член эмулирует функциональные возможности сообщения BCM_SETIMAGELIST, как описано в разделе "Кнопки " пакета SDK для Windows.

CButton::SetNote

Задает текст заметки для текущего элемента управления командной ссылки.

BOOL SetNote(LPCTSTR lpszNote);

Параметры

lpszNote
[in] Указатель на строку Юникода, заданную в качестве текста заметок для элемента управления командной ссылкой.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Используйте этот метод только с элементами управления, стиль кнопки которых BS_COMMANDLINK или BS_DEFCOMMANDLINK.

Этот метод отправляет сообщение BCM_SETNOTE , описанное в пакете SDK для Windows.

Пример

Первый пример кода определяет переменную, m_cmdLinkкоторая используется для программного доступа к элементу управления командной ссылки. Эта переменная используется в следующем примере.

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

Следующий пример кода задает текст заметки для элемента управления командной ссылкой.

// Set the command link text.
m_cmdLink.SetNote(_T("This is the command link note."));

CButton::SetSplitGlyph

Связывает указанный глиф с текущим элементом управления "Разделить кнопку".

BOOL SetSplitGlyph(TCHAR chGlyph);

Параметры

chGlyph
[in] Символ, указывающий глиф, используемый в качестве раскрывающейся кнопки.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Используйте этот метод только с элементами управления, которые имеют стиль кнопки BS_SPLITBUTTON или BS_DEFSPLITBUTTON.

Глиф — это физическое представление символа в определенном шрифте. Параметр chGlyph не используется в качестве глифа, но вместо этого используется для выбора глифа из набора системных глифов. Глиф стрелки раскрывающегося списка по умолчанию указывается символом 6 и напоминает символ Юникода BLACK DOWN-POINTING TRIANGLE (U+25BC).

Этот метод инициализирует mask элемент структуры BUTTON_SPLITINFO с флагом BCSIF_GLYPH и himlGlyph членом с параметром chGlyph, а затем отправляет эту структуру в сообщении BCM_GETSPLITINFO, описанном в пакете SDK для Windows.

CButton::SetSplitImageList

Связывает список изображений с текущим элементом управления "Разделить кнопку".

BOOL SetSplitImageList(CImageList* pSplitImageList);

Параметры

pSplitImageList
[in] Указатель на объект CImageList , назначаемый текущему элементу управления "Разделить кнопку".

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Используйте этот метод только с элементами управления, стиль кнопки которых BS_SPLITBUTTON или BS_DEFSPLITBUTTON.

Этот метод инициализирует mask элемент структуры BUTTON_SPLITINFO с флагом BCSIF_IMAGE и himlGlyph членом с параметром pSplitImageList, а затем отправляет эту структуру в сообщении BCM_GETSPLITINFO, описанном в пакете SDK для Windows.

CButton::SetSplitInfo

Задает параметры, определяющие, как Windows рисует текущий элемент управления кнопкой разделения.

BOOL SetSplitInfo(PBUTTON_SPLITINFO pInfo);

Параметры

pInfo
[in] Указатель на структуру BUTTON_SPLITINFO, которая определяет текущий элемент управления кнопкой разделения.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Используйте этот метод только с элементами управления, стиль кнопки которых BS_SPLITBUTTON или BS_DEFSPLITBUTTON.

Этот метод отправляет сообщение BCM_SETSPLITINFO , описанное в пакете SDK для Windows.

Пример

Первый пример кода определяет переменную, m_splitButtonкоторая используется для программного доступа к элементу управления разделенной кнопки.

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

Следующий пример кода изменяет глиф, используемый для стрелки раскрывающегося списка кнопки. В примере замещается глиф треугольника вверх по умолчанию, указывающий на глиф по умолчанию. Отображаемый глиф зависит от символа, указанного в himlGlyph элементе BUTTON_SPLITINFO структуры. Глиф треугольника вниз задается символом "6" и глифом треугольника вверх указывает символ "5". Для сравнения см. удобный метод CButton::SetSplitGlyph.

/* 
   The drop-down arrow glyph is a function of the specified character. 
   The default "down" drop-down arrow glyph is specified by a 
   character '6'. Set the "up" arrow glyph, which is a character '5'.
   See the convenience method, SetSplitGlyph(), for comparison.
   */
BUTTON_SPLITINFO bsInfo = {0};
bsInfo.mask = BCSIF_GLYPH;
TCHAR chGlyph = _T('5'); // "up" arrow glyph
bsInfo.himlGlyph = (HIMAGELIST)chGlyph;
bRC = m_splitButton.SetSplitInfo(&bsInfo);

CButton::SetSplitSize

Задает ограничивающий прямоугольник раскрывающегося элемента управления текущей кнопки разделения.

BOOL SetSplitSize(LPSIZE pSize);

Параметры

pSize
[in] Указатель на структуру SIZE, описывающую ограничивающий прямоугольник.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Используйте этот метод только с элементами управления, стиль кнопки которых BS_SPLITBUTTON или BS_DEFSPLITBUTTON.

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

Этот метод инициализирует mask элемент структуры BUTTON_SPLITINFO с флагом BCSIF_SIZE и size членом с параметром pSize, а затем отправляет эту структуру в сообщении BCM_GETSPLITINFO, описанном в пакете SDK для Windows.

Пример

Первый пример кода определяет переменную, m_splitButtonкоторая используется для программного доступа к элементу управления разделенной кнопки. Эта переменная используется в следующем примере.

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

Следующий пример кода удвоит размер раскрывающейся кнопки с раскрывающейся кнопкой.

// Double the size of the split button drop-down arrow.
SIZE sz;
bRC = m_splitButton.GetSplitSize(&sz); // current size
sz.cx = sz.cx * 2;
sz.cy = sz.cy * 2;
bRC = m_splitButton.SetSplitSize(&sz);

CButton::SetSplitStyle

Задает стиль текущего элемента управления "Разделить кнопку".

BOOL SetSplitStyle(UINT uSplitStyle);

Параметры

uSplitStyle
[in] Побитовое сочетание стилей разделенных кнопок. Дополнительные сведения см. в uSplitStyle элементе структуры BUTTON_SPLITINFO .

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Используйте этот метод только с элементами управления, стиль кнопки которых BS_SPLITBUTTON или BS_DEFSPLITBUTTON.

Стили кнопки разделения указывают выравнивание, пропорции и графический формат, с помощью которого Windows рисует значок разделенной кнопки. Дополнительные сведения см. в uSplitStyle элементе структуры BUTTON_SPLITINFO .

Этот метод инициализирует mask элемент структуры BUTTON_SPLITINFO с флагом BCSIF_STYLE и uSplitStyle членом с параметром uSplitStyle, а затем отправляет эту структуру в сообщении BCM_GETSPLITINFO, описанном в пакете SDK для Windows.

Пример

Первый пример кода определяет переменную, m_splitButtonкоторая используется для программного доступа к элементу управления разделенной кнопки.

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

Следующий пример кода задает стиль раскрывающейся кнопки. Стиль BCSS_ALIGNLEFT отображает стрелку в левой части кнопки, а стиль BCSS_STRETCH сохраняет пропорции стрелки раскрывающегося списка при изменении размера кнопки.

/* 
    Set the style of the split button drop-down arrow: Display the 
    arrow on the left and retain the arrow's proportions when resizing 
    the control.
    */
bRC = m_splitButton.SetSplitStyle(BCSS_ALIGNLEFT | BCSS_STRETCH);

CButton::SetState

Задает, выделен ли элемент управления кнопкой.

void SetState(BOOL bHighlight);

Параметры

bHighlight
Указывает, должна ли быть выделена кнопка. Значение, отличное от нуля, выделяет кнопку; Значение 0 удаляет любое выделение.

Замечания

Выделение влияет на внешний вид элемента управления кнопкой. Он не влияет на состояние флажка переключателя или флажка.

Элемент управления кнопкой автоматически выделяется, когда пользователь щелкает и удерживает левую кнопку мыши. Выделение удаляется, когда пользователь освобождает кнопку мыши.

Пример

CButton myPushButton;

// Create a push button.
myPushButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                    CRect(10, 10, 100, 30), pParentWnd, 1);

// Invert the highlight state of the button.
myPushButton.SetState(!(myPushButton.GetState() & 0x0004));

CButton::SetTextMargin

Вызовите этот метод, чтобы задать текстовое поле CButton объекта.

BOOL SetTextMargin(RECT* pmargin);

Параметры

pmargin
Указатель на новое текстовое поле.

Возвращаемое значение

Возвращает значение TRUE при успешном выполнении, false при сбое.

Замечания

Эта функция-член эмулирует функциональные возможности сообщения BCM_SETTEXTMARGIN, как описано в разделе "Кнопки " пакета SDK для Windows.

См. также

Класс CWnd
Диаграмма иерархии
Класс CWnd
Класс CComboBox
Класс CEdit
Класс CListBox
Класс CScrollBar
Класс CStatic
Класс CBitmapButton
Класс CDialog