Класс 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
объект в стеке или внедряется в родительский диалоговый объект, он автоматически уничтожается.
Иерархия наследования
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