CButton 클래스

Windows 단추 컨트롤의 기능을 제공합니다.

구문

class CButton : public CWnd

멤버

공용 생성자

속성 설명
CButton::CButton CButton 개체를 생성합니다.

공용 메서드

이름 설명
CButton::Create Windows 단추 컨트롤을 만들어 개체에 CButton 연결합니다.
CButton::DrawItem 소유자가 그린 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 단추 컨트롤의 텍스트 여백을 검색합니다.
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 단추 컨트롤의 텍스트 여백을 설정합니다.

설명

단추 컨트롤은 클릭하거나 끌 수 있는 작은 사각형 자식 창입니다. 단추는 단독으로 또는 그룹에서 사용할 수 있으며 레이블을 지정하거나 텍스트 없이 표시할 수 있습니다. 단추는 일반적으로 사용자가 클릭할 때 모양을 변경합니다.

일반적인 단추는 검사 상자, 라디오 단추 및 푸시 버튼입니다. 개체는 CButton Create 멤버 함수가 초기화할 때 지정한 단추 스타일에 따라 이러한 개체가 될 수 있습니다.

또한 CBitmapButton 클래스에서 CButton 파생된 텍스트 대신 비트맵 이미지로 레이블이 지정된 단추 컨트롤을 만들 수 있습니다. A CBitmapButton 는 단추의 위쪽, 아래쪽, 포커스가 있는 상태 및 비활성화된 상태에 대해 별도의 비트맵을 가질 수 있습니다.

대화 상자 템플릿에서 또는 코드에서 직접 단추 컨트롤을 만들 수 있습니다. 두 경우 모두 먼저 생성자를 CButton 호출하여 개체를 생성 CButton 한 다음, 멤버 함수를 호출 Create 하여 Windows 단추 컨트롤을 만들고 개체에 CButton 연결합니다.

생성은 에서 파생된 CButton클래스의 1단계 프로세스일 수 있습니다. 파생 클래스에 대한 생성자를 작성하고 생성자 내에서 호출 Create 합니다.

단추 컨트롤에서 부모로 보낸 Windows 알림 메시지(일반적으로 CDialog에서 파생된 클래스)를 처리하려면 각 메시지에 대한 부모 클래스에 메시지 맵 항목 및 메시지 처리기 멤버 함수를 추가합니다.

각 메시지 맵 항목은 다음 형식을 사용합니다.

ON_Notification(id, memberFxn)

여기서 ID 는 알림을 보내는 컨트롤의 자식 창 ID를 지정하고 memberFxn 은 알림을 처리하기 위해 작성한 부모 멤버 함수의 이름입니다.

부모의 함수 프로토타입은 다음과 같습니다.

afx_msg void memberFxn();

잠재적인 메시지 맵 항목은 다음과 같습니다.

맵 항목 부모로 전송되는 경우...
ON_BN_CLICKED 사용자가 단추를 클릭합니다.
ON_BN_DOUBLECLICKED 사용자가 단추를 두 번 클릭합니다.

대화 상자 리소스 CButton 에서 개체를 CButton 만들면 사용자가 대화 상자를 닫으면 개체가 자동으로 제거됩니다.

창 내에서 개체를 CButton 만드는 경우 개체를 삭제해야 할 수 있습니다. 함수를 CButton 사용하여 힙에 개체를 new 만드는 경우 사용자가 Windows 단추 컨트롤을 닫을 때 개체를 호출 delete 하여 삭제해야 합니다. 스택에 개체를 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
단추 컨트롤의 크기와 위치를 지정합니다. 개체 또는 RECT 구조체 CRect 일 수 있습니다.

pParentWnd
단추 컨트롤의 부모 창(일반적으로 .)을 CDialog지정합니다. NULL이 아니어야 합니다.

nID
단추 컨트롤의 ID를 지정합니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 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::DrawItem

소유자 그리기 단추의 시각적 측면이 변경된 경우 프레임워크에서 호출됩니다.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

매개 변수

lpDrawItemStruct
DRAWITEMSTRUCT 구조체에 대한 긴 포인터입니다. 구조체에는 그릴 항목과 필요한 그리기 유형에 대한 정보가 포함됩니다.

설명

소유자가 그린 단추에는 BS_OWNERDRAW 스타일 집합이 있습니다. 이 멤버 함수를 재정의하여 소유자가 그린 CButton 개체에 대한 그리기를 구현합니다. 애플리케이션은 멤버 함수가 종료되기 전에 lpDrawItemStruct에 제공된 표시 컨텍스트에 대해 선택한 모든 GDI(그래픽 디바이스 인터페이스) 개체를 복원해야 합니다.

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;

Return Value

비트맵에 대한 핸들입니다. 비트맵이 이전에 지정되지 않은 경우 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;

Return Value

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;

Return Value

BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIOBUTTON 또는 BS_3STATE 스타일로 만든 단추 컨트롤의 반환 값은 다음 값 중 하나입니다.

의미
BST_UNCHECKED 단추 상태가 un검사ed입니다.
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();

Return Value

커서 이미지에 대한 핸들입니다. 이전에 커서를 지정하지 않은 경우 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;

Return Value

아이콘에 대한 핸들입니다. 이전에 지정한 아이콘이 없으면 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
단추의 현재 크기에 대한 포인터입니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

이 멤버 함수는 Windows SDK의 Buttons 섹션에 설명된 대로 BCM_GETIDEALSIZE 메시지의 기능을 에뮬레이트합니다 .

CButton::GetImageList

이 메서드를 호출하여 단추 컨트롤에서 이미지 목록을 가져옵니다.

BOOL GetImageList(PBUTTON_IMAGELIST pbuttonImagelist);

매개 변수

pbuttonImagelist
개체의 이미지 목록에 대한 포인터입니다 CButton .

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

이 멤버 함수는 Windows SDK의 Buttons 섹션에 설명된 대로 BCM_GETIMAGELIST 메시지의 기능을 에뮬레이트합니다 .

CButton::GetNote

현재 명령 링크 컨트롤과 연결된 메모 텍스트를 검색합니다.

CString GetNote() const;

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

매개 변수

lpszNote
[out] 호출자가 할당 및 할당을 담당하는 버퍼에 대한 포인터입니다. 반환 값이 TRUE이면 버퍼에 현재 명령 링크 컨트롤과 연결된 메모 텍스트가 포함됩니다. 그렇지 않으면 버퍼가 변경되지 않습니다.

cchNote
[in, out] 부호 없는 정수 변수에 대한 포인터입니다. 이 메서드가 호출되면 변수에는 lpszNote 매개 변수로 지정된 버퍼의 크기가 포함됩니다. 이 메서드가 반환될 때 반환 값이 TRUE이면 변수에 현재 명령 링크 컨트롤과 연결된 메모의 크기가 포함됩니다. 반환 값이 FALSE이면 변수에 메모를 포함하는 데 필요한 버퍼 크기가 포함됩니다.

Return Value

첫 번째 오버로드 에서 현재 명령 링크 컨트롤과 연결된 메모 텍스트를 포함하는 CString 개체입니다.

또는

두 번째 오버로드에서 이 메서드가 성공하면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

단추 스타일이 BS_COMMANDLINK 또는 BS_DEFCOMMANDLINK 컨트롤에서만 이 메서드를 사용합니다.

이 메서드는 Windows SDK에 설명된 BCM_GETNOTE 메시지를 보냅니다.

CButton::GetNoteLength

현재 명령 링크 컨트롤에 대한 메모 텍스트의 길이를 검색합니다.

UINT GetNoteLength() const;

Return Value

현재 명령 링크 컨트롤에 대한 메모 텍스트의 길이(16비트 유니코드 문자)입니다.

설명

단추 스타일이 BS_COMMANDLINK 또는 BS_DEFCOMMANDLINK 컨트롤에서만 이 메서드를 사용합니다.

이 메서드는 Windows SDK에 설명된 BCM_GETNOTELENGTH 메시지를 보냅니다.

CButton::GetSplitGlyph

현재 분할 단추 컨트롤과 연결된 문자 모양을 검색합니다.

TCHAR GetSplitGlyph() const;

Return Value

현재 분할 단추 컨트롤과 연결된 문자 모양입니다.

설명

문자 모양은 특정 글꼴에서 문자의 실제 표현입니다. 예를 들어 분할 단추 컨트롤은 유니코드 검사 표시 문자(U+2713)의 문자 모양으로 데코레이트될 수 있습니다.

단추 스타일이 BS_SPLITBUTTON 또는 BS_DEFSPLITBUTTON 컨트롤에만 이 메서드를 사용합니다.

이 메서드는 mask BCSIF_GLYPH 플래그를 사용하여 BUTTON_SPLITINFO 구조체의 멤버를 초기화한 다음 Windows SDK에 설명된 BCM_GETSPLITINFO 메시지에서 해당 구조를 보냅니다. 메시지 함수가 반환되면 이 메서드는 구조체의 멤버에서 himlGlyph 문자 모양을 검색합니다.

CButton::GetSplitImageList

현재 분할 단추 컨트롤의 이미지 목록을 검색합니다.

CImageList* GetSplitImageList() const;

Return Value

CImageList 개체에 대한 포인터입니다 .

설명

단추 스타일이 BS_SPLITBUTTON 또는 BS_DEFSPLITBUTTON 컨트롤에만 이 메서드를 사용합니다.

이 메서드는 mask BCSIF_IMAGE 플래그를 사용하여 BUTTON_SPLITINFO 구조체의 멤버를 초기화한 다음 Windows SDK에 설명된 BCM_GETSPLITINFO 메시지에서 해당 구조를 보냅니다. 메시지 함수가 반환되면 이 메서드는 구조체의 멤버에서 himlGlyph 이미지 목록을 검색합니다.

CButton::GetSplitInfo

Windows에서 현재 분할 단추 컨트롤을 그리는 방법을 결정하는 매개 변수를 검색합니다.

BOOL GetSplitInfo(PBUTTON_SPLITINFO pInfo) const;

매개 변수

pInfo
[out] 현재 분할 단추 컨트롤에 대한 정보를 수신하는 BUTTON_SPLITINFO 구조체에 대한 포인터입니다. 호출자는 구조를 할당하는 역할을 담당합니다.

Return Value

이 메서드가 성공하면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

단추 스타일이 BS_SPLITBUTTON 또는 BS_DEFSPLITBUTTON 컨트롤에만 이 메서드를 사용합니다.

이 메서드는 Windows SDK에 설명된 BCM_GETSPLITINFO 메시지를 보냅니다.

CButton::GetSplitSize

현재 분할 단추 컨트롤의 드롭다운 구성 요소 경계 사각형을 검색합니다.

BOOL GetSplitSize(LPSIZE pSize) const;

매개 변수

pSize
[out] 사각형에 대한 설명을 받는 SIZE 구조체에 대한 포인터입니다.

Return Value

이 메서드가 성공하면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

단추 스타일이 BS_SPLITBUTTON 또는 BS_DEFSPLITBUTTON 컨트롤에만 이 메서드를 사용합니다.

분할 단추 컨트롤이 확장되면 목록 컨트롤 또는 호출기 컨트롤과 같은 드롭다운 구성 요소를 표시할 수 있습니다. 이 메서드는 드롭다운 구성 요소가 포함된 경계 사각형을 검색합니다.

이 메서드는 mask BCSIF_SIZE 플래그를 사용하여 BUTTON_SPLITINFO 구조체의 멤버를 초기화한 다음 Windows SDK에 설명된 BCM_GETSPLITINFO 메시지에서 해당 구조를 보냅니다. 메시지 함수가 반환되면 이 메서드는 구조체의 멤버에서 경계 사각형을 size 검색합니다.

CButton::GetSplitStyle

현재 분할 단추 컨트롤을 정의하는 분할 단추 스타일을 검색합니다.

UINT GetSplitStyle() const;

Return Value

분할 단추 스타일의 비트 조합입니다. 자세한 내용은 BUTTON_SPLITINFO 구조체의 멤버를 참조 uSplitStyle 하세요.

설명

단추 스타일이 BS_SPLITBUTTON 또는 BS_DEFSPLITBUTTON 컨트롤에만 이 메서드를 사용합니다.

분할 단추 스타일은 Windows에서 분할 단추 아이콘을 그리는 맞춤, 가로 세로 비율 및 그래픽 형식을 지정합니다.

이 메서드는 mask BCSIF_STYLE 플래그를 사용하여 BUTTON_SPLITINFO 구조체의 멤버를 초기화한 다음 Windows SDK에 설명된 BCM_GETSPLITINFO 메시지에서 해당 구조를 보냅니다. 메시지 함수가 반환되면 이 메서드는 구조체의 멤버에서 uSplitStyle 분할 단추 스타일을 검색합니다.

CButton::GetState

단추 컨트롤의 상태를 검색합니다.

UINT GetState() const;

Return Value

단추 컨트롤의 현재 상태를 나타내는 값의 조합을 포함하는 비트 필드입니다. 다음 표에서는 가능한 값을 나열합니다.

단추 상태 설명
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 .

Return Value

텍스트 여백을 반환합니다. 성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

이 멤버 함수는 Windows SDK의 단추 섹션에 설명된 대로 BCM_GETTEXTMARGIN 메시지의 기능을 에뮬레이트합니다 .

CButton::SetBitmap

새 비트맵을 단추와 연결하려면 이 멤버 함수를 호출합니다.

HBITMAP SetBitmap(HBITMAP hBitmap);

매개 변수

hBitmap
비트맵의 핸들입니다.

Return Value

이전에 단추와 연결된 비트맵의 핸들입니다.

설명

비트맵은 기본적으로 가운데에 있는 단추의 면에 자동으로 배치됩니다. 비트맵이 단추에 비해 너무 크면 양쪽에서 잘립니다. 다음을 포함하여 다른 맞춤 옵션을 선택할 수 있습니다.

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

단추 당 4 개의 비트맵을 사용하는 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이 아닌 값은 단추를 다시 그립니다. 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 단추 상태를 un검사ed로 설정합니다.
BST_CHECKED 단추 상태를 검사 설정하십시오.
BST_INDETERMINATE 단추 상태를 확정되지 않은 상태로 설정합니다. 이 값은 단추에 BS_3STATE 또는 BS_AUTO3STATE 스타일이 있는 경우에만 사용할 수 있습니다.

설명

이 멤버 함수는 푸시버튼에 영향을 주지 않습니다.

예시

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
커서의 핸들입니다.

Return Value

이전에 단추와 연결된 커서의 핸들입니다.

설명

커서는 기본적으로 가운데에 있는 단추의 면에 자동으로 배치됩니다. 단추에 커서가 너무 크면 양쪽에서 잘립니다. 다음을 포함하여 다른 맞춤 옵션을 선택할 수 있습니다.

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

단추 당 4 개의 비트맵을 사용하는 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입니다.

Return Value

이 메서드가 성공하면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

분할 단추 컨트롤은 BS_SPLITBUTTON 또는 BS_DEFSPLITBUTTON 스타일이며 단추와 오른쪽의 드롭다운 화살표로 구성됩니다. 자세한 내용은 단추 스타일을 참조 하세요. 일반적으로 드롭다운 상태는 사용자가 드롭다운 화살표를 클릭할 때 설정됩니다. 이 메서드를 사용하여 컨트롤의 드롭다운 상태를 프로그래밍 방식으로 설정합니다. 상태를 나타내기 위해 드롭다운 화살표가 음영 처리되어 그려집니다.

이 메서드는 Windows SDK에 설명된 BCM_SETDROPDOWNSTATE 메시지를 보냅니다.

예시

첫 번째 코드 예제에서는 프로그래밍 방식으로 분할 단추 컨트롤에 액세스 하는 데 사용 되는 변수 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] 상태를 설정 elevation required 하려면 TRUE, 그렇지 않으면 FALSE입니다.

Return Value

이 메서드가 성공하면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

동작을 수행하기 위해 단추 또는 명령 링크 컨트롤에 상승된 보안 권한이 필요한 경우 컨트롤 elevation required 을 상태로 설정합니다. 그 후 Windows는 컨트롤에 UAC(사용자 계정 컨트롤) 방패 아이콘을 표시합니다. 자세한 내용은 사용자 계정 컨트롤을 참조하십시오.

이 메서드는 Windows SDK에 설명된 BCM_SETSHIELD 메시지를 보냅니다.

CButton::SetIcon

새 아이콘을 단추와 연결하려면 이 멤버 함수를 호출합니다.

HICON SetIcon(HICON hIcon);

매개 변수

hIcon
아이콘의 핸들입니다.

Return Value

단추와 이전에 연결된 아이콘의 핸들입니다.

설명

아이콘은 기본적으로 가운데에 있는 단추의 면에 자동으로 배치됩니다. 아이콘이 단추에 비해 너무 크면 양쪽에서 잘립니다. 다음을 포함하여 다른 맞춤 옵션을 선택할 수 있습니다.

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

단추 당 4 개의 비트맵을 사용하는 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
새 이미지 목록에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

이 멤버 함수는 Windows SDK의 단추 섹션에 설명된 대로 BCM_SETIMAGELIST 메시지의 기능을 에뮬레이트합니다 .

CButton::SetNote

현재 명령 링크 컨트롤의 메모 텍스트를 설정합니다.

BOOL SetNote(LPCTSTR lpszNote);

매개 변수

lpszNote
[in] 명령 링크 컨트롤의 메모 텍스트로 설정된 유니코드 문자열에 대한 포인터입니다.

Return Value

이 메서드가 성공하면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

단추 스타일이 BS_COMMANDLINK 또는 BS_DEFCOMMANDLINK 컨트롤에서만 이 메서드를 사용합니다.

이 메서드는 Windows SDK에 설명된 BCM_SETNOTE 메시지를 보냅니다.

예시

첫 번째 코드 예제에서는 프로그래밍 방식으로 명령 링크 컨트롤에 액세스 하는 데 사용 되는 변수 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] 분할 단추 드롭다운 화살표로 사용할 문자 모양을 지정하는 문자입니다.

Return Value

이 메서드가 성공하면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

단추 스타일이 BS_SPLITBUTTON 또는 BS_DEFSPLITBUTTON 컨트롤에서만 이 메서드를 사용합니다.

문자 모양은 특정 글꼴에서 문자의 실제 표현입니다. chGlyph 매개 변수는 문자 모양으로 사용되지 않고 대신 시스템 정의 문자 모양 집합에서 문자 모양을 선택하는 데 사용됩니다. 기본 드롭다운 화살표 문자 모양은 '6' 문자로 지정되며 유니코드 문자인 BLACK DOWN-POINTING TRIANGLE(U+25BC)과 유사합니다.

이 메서드는 maskBCSIF_GLYPH 플래그와 himlGlyph chGlyph 매개 변수를 사용하여 멤버를 사용하여 BUTTON_SPLITINFO 구조체의 멤버를 초기화한 다음 Windows SDK에 설명된 BCM_GETSPLITINFO 메시지에서 해당 구조를 보냅니다.

CButton::SetSplitImageList

이미지 목록을 현재 분할 단추 컨트롤과 연결합니다.

BOOL SetSplitImageList(CImageList* pSplitImageList);

매개 변수

pSplitImageList
[in] 현재 분할 단추 컨트롤에 할당할 CImageList 개체에 대한 포인터입니다.

Return Value

이 메서드가 성공하면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

단추 스타일이 BS_SPLITBUTTON 또는 BS_DEFSPLITBUTTON 컨트롤에만 이 메서드를 사용합니다.

이 메서드는 maskBCSIF_IMAGE 플래그와 himlGlyph pSplitImageList 매개 변수를 사용하여 멤버를 사용하여 BUTTON_SPLITINFO 구조체의 멤버를 초기화한 다음 Windows SDK에 설명된 BCM_GETSPLITINFO 메시지에서 해당 구조를 보냅니다.

CButton::SetSplitInfo

Windows에서 현재 분할 단추 컨트롤을 그리는 방법을 결정하는 매개 변수를 지정합니다.

BOOL SetSplitInfo(PBUTTON_SPLITINFO pInfo);

매개 변수

pInfo
[in] 현재 분할 단추 컨트롤을 정의하는 BUTTON_SPLITINFO 구조체에 대한 포인터입니다.

Return Value

이 메서드가 성공하면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

단추 스타일이 BS_SPLITBUTTON 또는 BS_DEFSPLITBUTTON 컨트롤에만 이 메서드를 사용합니다.

이 메서드는 Windows SDK에 설명된 BCM_SETSPLITINFO 메시지를 보냅니다.

예시

첫 번째 코드 예제에서는 프로그래밍 방식으로 분할 단추 컨트롤에 액세스 하는 데 사용 되는 변수 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;

다음 코드 예제에서는 분할 단추 드롭다운 화살표에 사용되는 문자 모양을 변경합니다. 이 예제에서는 위쪽을 가리키는 삼각형 문자 모양을 기본 아래쪽 삼각형 문자 모양으로 대체합니다. 표시되는 문자 모양은 구조체의 BUTTON_SPLITINFO 멤버에 지정한 문자에 himlGlyph 따라 달라집니다. 아래쪽 삼각형 문자 모양은 문자 '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 구조체에 대한 포인터입니다.

Return Value

이 메서드가 성공하면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

단추 스타일이 BS_SPLITBUTTON 또는 BS_DEFSPLITBUTTON 컨트롤에만 이 메서드를 사용합니다.

분할 단추 컨트롤이 확장되면 목록 컨트롤 또는 호출기 컨트롤과 같은 드롭다운 구성 요소를 표시할 수 있습니다. 이 메서드는 드롭다운 구성 요소를 포함하는 경계 사각형의 크기를 지정합니다.

이 메서드는 maskBCSIF_SIZE 플래그와 size pSize 매개 변수를 사용하여 멤버를 사용하여 BUTTON_SPLITINFO 구조체의 멤버를 초기화한 다음 Windows SDK에 설명된 BCM_GETSPLITINFO 메시지에서 해당 구조를 보냅니다.

예시

첫 번째 코드 예제에서는 프로그래밍 방식으로 분할 단추 컨트롤에 액세스 하는 데 사용 되는 변수 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] 분할 단추 스타일의 비트 조합입니다. 자세한 내용은 BUTTON_SPLITINFO 구조체의 멤버를 참조 uSplitStyle 하세요.

Return Value

이 메서드가 성공하면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

단추 스타일이 BS_SPLITBUTTON 또는 BS_DEFSPLITBUTTON 컨트롤에만 이 메서드를 사용합니다.

분할 단추 스타일은 Windows에서 분할 단추 아이콘을 그리는 맞춤, 가로 세로 비율 및 그래픽 형식을 지정합니다. 자세한 내용은 BUTTON_SPLITINFO 구조체의 멤버를 참조 uSplitStyle 하세요.

이 메서드는 mask BCSIF_STYLE 플래그를 사용하여 BUTTON_SPLITINFO 구조체의 멤버를 초기화하고 uSplitStyle uSplitStyle 매개 변수를 사용하여 멤버를 초기화한 다음 Windows SDK에 설명된 BCM_GETSPLITINFO 메시지에서 해당 구조를 보냅니다.

예시

첫 번째 코드 예제에서는 프로그래밍 방식으로 분할 단추 컨트롤에 액세스 하는 데 사용 되는 변수 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이 아닌 값은 단추를 강조 표시합니다. 값이 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
새 텍스트 여백에 대한 포인터입니다.

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

이 멤버 함수는 Windows SDK의 Buttons 섹션에 설명된 대로 BCM_SETTEXTMARGIN 메시지의 기능을 에뮬레이트합니다 .

참고 항목

CWnd 클래스
계층 구조 차트
CWnd 클래스
CComboBox 클래스
CEdit 클래스
CListBox 클래스
CScrollBar 클래스
CStatic 클래스
CBitmapButton 클래스
CDialog 클래스