다음을 통해 공유


CBitmapButton 클래스

텍스트가 아닌 비트맵 이미지로 레이블이 표시된 누름 단추 컨트롤을 만듭니다.

구문

class CBitmapButton : public CButton

멤버

공용 생성자

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

공용 메서드

이름 설명
CBitmapButton::AutoLoad 대화 상자의 단추를 클래스의 CBitmapButton 개체와 연결하고, 이름으로 비트맵을 로드하고, 비트맵에 맞게 단추 크기를 조정합니다.
CBitmapButton::LoadBitmaps 애플리케이션의 리소스 파일에서 하나 이상의 명명된 비트맵 리소스를 로드하고 개체에 비트맵을 연결하여 개체를 초기화합니다.
CBitmapButton::SizeToContent 비트맵에 맞게 단추 크기를 조정합니다.

설명

CBitmapButton 개체는 최대 4개의 비트맵을 포함하며, 단추가 가정할 수 있는 여러 상태에 대한 이미지를 포함합니다. 위쪽(또는 정상), 아래쪽(또는 선택됨), 포커스가 있는 이미지 및 사용 안 함 첫 번째 비트맵만 필요합니다. 다른 항목은 선택 사항입니다.

비트맵 단추 이미지에는 이미지 주위의 테두리와 이미지 자체가 포함됩니다. 테두리는 일반적으로 단추의 상태를 표시하는 역할을 합니다. 예를 들어 포커스가 있는 상태의 비트맵은 일반적으로 위쪽 상태의 비트맵과 비슷하지만 테두리에서 파선 사각형이 삽입되거나 테두리의 굵은 실선이 있습니다. 비활성 상태의 비트맵은 일반적으로 위쪽 상태의 비트맵과 유사하지만 대비가 낮습니다(예: 흐리게 표시되거나 회색 메뉴 선택).

이러한 비트맵은 모든 크기일 수 있지만 모두 위쪽 상태의 비트맵과 동일한 크기인 것처럼 처리됩니다.

다양한 애플리케이션은 비트맵 이미지의 다양한 조합을 요구합니다.

위로 아래로 포커스 사용 안 함 애플리케이션
× 비트맵
× × WS_TABSTOP 스타일이 없는 단추
× × × × 모든 상태가 있는 대화 상자 단추
× × × WS_TABSTOP 스타일이 있는 대화 상자 단추

비트맵 단추 컨트롤을 만들 때 BS_OWNERDRAW 스타일을 설정하여 단추가 소유자로 그려지도록 지정합니다. 이로 인해 Windows는 단추에 대한 WM_MEASUREITEM 및 WM_DRAWITEM 메시지를 보냅니다. 프레임워크는 이러한 메시지를 처리하고 단추의 모양을 관리합니다.

창의 클라이언트 영역에서 비트맵 단추 컨트롤을 만들려면

  1. 단추에 대한 1~4개의 비트맵 이미지를 만듭니다.

  2. CBitmapButton 개체를 생성합니다.

  3. Create 함수를 호출하여 Windows 단추 컨트롤을 만들고 개체에 CBitmapButton 연결합니다.

  4. LoadBitmaps 멤버 함수를 호출하여 비트맵 단추를 생성한 후 비트맵 리소스를 로드합니다.

대화 상자에 비트맵 단추 컨트롤을 포함하려면

  1. 단추에 대한 1~4개의 비트맵 이미지를 만듭니다.

  2. 비트맵 단추를 사용할 위치에 소유자 그리기 단추가 있는 대화 상자 템플릿을 만듭니다. 템플릿의 단추 크기는 중요하지 않습니다.

  3. 단추의 캡션 "MYIMAGE"와 같은 값으로 설정하고 단추의 기호(예: IDC_MYIMAGE)를 정의합니다.

  4. 애플리케이션의 리소스 스크립트에서 단추에 대해 생성된 각 이미지에 3단계의 단추 캡션 사용되는 문자열에 "U", "D", "F" 또는 "X"(위쪽, 아래쪽, 포커스 및 비활성)를 추가하여 생성된 ID를 제공합니다. 예를 들어 "MYIMAGE"캡션 단추의 경우 ID는 "MYIMAGEU", "MYIMAGED", "MYIMAGEF" 및 "MYIMAGEX"입니다. 큰따옴표 안에 비트맵의 ID를 지정해야 합니다. 그렇지 않으면 리소스 편집기가 리소스에 정수를 할당하고 이미지를 로드할 때 MFC가 실패합니다.

  5. 애플리케이션의 대화 상자 클래스(파생)에서 CDialog멤버 개체를 CBitmapButton 추가합니다.

  6. CDialog 개체의 OnInitDialog 루틴에서 단추의 컨트롤 ID 및 개체 포인터를 매개 변수로 사용하여 개체 this 의 AutoLoad 함수를 CDialog 호출 CBitmapButton 합니다.

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

CToolBar 클래스는 비트맵 단추에 대해 다른 접근 방식을 사용합니다.

자세한 CBitmapButton내용은 컨트롤을 참조 하세요.

상속 계층 구조

CObject

CCmdTarget

CWnd

CButton

CBitmapButton

요구 사항

헤더: afxext.h

CBitmapButton::AutoLoad

대화 상자의 단추를 클래스의 CBitmapButton 개체와 연결하고, 이름으로 비트맵을 로드하고, 비트맵에 맞게 단추 크기를 조정합니다.

BOOL AutoLoad(
    UINT nID,
    CWnd* pParent);

매개 변수

nID
단추의 컨트롤 ID입니다.

pParent
단추를 소유하는 개체에 대한 포인터입니다.

Return Value

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

설명

이 함수를 AutoLoad 사용하여 대화 상자에서 소유자 그리기 단추를 비트맵 단추로 초기화합니다. 이 함수를 사용하기 위한 지침은 클래스에 대한 설명에 CBitmapButton 있습니다.

예시

CBitmapButton myButton;

// Initialize the owner-drawn button with the id IDC_MYBUTTON as a bitmap
// button. This code is used in the OnInitDialog handler of my dialog.
myButton.AutoLoad(IDC_MYBUTTON, this);

CBitmapButton::CBitmapButton

CBitmapButton 개체를 만듭니다.

CBitmapButton();

설명

C++ CBitmapButton 개체를 만든 후 CButton::Create를 호출하여 Windows 단추 컨트롤을 만들고 개체에 CBitmapButton 연결합니다.

예시

// Declare a bitmap button object on the stack.
CBitmapButton myButton;

// Declare a bitmap button object on the heap.
CBitmapButton *pmyButton = new CBitmapButton;

CBitmapButton::LoadBitmaps

리소스 이름 또는 ID 번호로 식별된 비트맵 이미지를 로드하거나, 예를 들어 대화 상자의 일부가 아닌 비트맵 단추를 만들기 때문에 함수를 사용할 AutoLoad 수 없는 경우 이 함수를 사용합니다.

BOOL LoadBitmaps(
    LPCTSTR lpszBitmapResource,
    LPCTSTR lpszBitmapResourceSel = NULL,
    LPCTSTR lpszBitmapResourceFocus = NULL,
    LPCTSTR lpszBitmapResourceDisabled = NULL);

BOOL LoadBitmaps(
    UINT nIDBitmapResource,
    UINT nIDBitmapResourceSel = 0,
    UINT nIDBitmapResourceFocus = 0,
    UINT nIDBitmapResourceDisabled = 0);

매개 변수

lpszBitmapResource
비트맵 단추의 표준 또는 "위쪽" 상태에 대한 비트맵의 이름을 포함하는 null로 끝나는 문자열을 가리킵니다. 필수입니다.

lpszBitmapResourceSel
비트맵 단추의 선택된 상태 또는 "아래쪽" 상태의 비트맵 이름이 들어 있는 null로 끝나는 문자열을 가리킵니다. NULL일 수 있습니다.

lpszBitmapResourceFocus
비트맵 단추의 포커스가 지정된 상태의 비트맵 이름이 들어 있는 null로 끝나는 문자열을 가리킵니다. NULL일 수 있습니다.

lpszBitmapResourceDisabled
비트맵 단추의 비활성 상태에 대한 비트맵 이름이 들어 있는 null로 끝나는 문자열을 가리킵니다. NULL일 수 있습니다.

nIDBitmapResource
비트맵 단추의 일반 또는 "위쪽" 상태에 대한 비트맵 리소스의 리소스 ID 번호를 지정합니다. 필수입니다.

nIDBitmapResourceSel
비트맵 단추의 선택 또는 "다운" 상태에 대한 비트맵 리소스의 리소스 ID 번호를 지정합니다. 0일 수 있습니다.

nIDBitmapResourceFocus
비트맵 단추의 포커스가 지정된 상태에 대한 비트맵 리소스의 리소스 ID 번호를 지정합니다. 0일 수 있습니다.

nIDBitmapResourceDisabled
비트맵 단추의 사용 안 함 상태에 대한 비트맵 리소스의 리소스 ID 번호를 지정합니다. 0일 수 있습니다.

Return Value

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

예시


// Create the bitmap button (must include the BS_OWNERDRAW style).
pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
                  CRect(10, 10, 100, 100), pParentWnd, 1);

// Load the bitmaps for this button.
pmyButton->LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS, IDB_DISABLE);

CBitmapButton::SizeToContent

비트맵 단추의 크기를 비트맵 크기로 조정하려면 이 함수를 호출합니다.

void SizeToContent();

예시

CBitmapButton *pmyButton = new CBitmapButton();

// Create the bitmap button (must include the BS_OWNERDRAW style).
pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
                  CRect(10, 10, 100, 100), pParentWnd, 1);

// Load the bitmaps for this button.
pmyButton->LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS, IDB_DISABLE);

// Resize the button to be the size of the bitmaps.
pmyButton->SizeToContent();

참고 항목

MFC 샘플 CTRLTEST
CButton 클래스
계층 구조 차트