다음을 통해 공유


CControlBar Class

컨트롤 바 클래스 CStatusBar, CToolBar, CDialogBar, CReBar 및 COleResizeBar의 기본 클래스입니다.

구문

class CControlBar : public CWnd

멤버

보호된 생성자

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

공용 메서드

이름 설명
CControlBar::CalcDynamicLayout 동적 컨트롤 막대의 크기를 CSize 개체로 반환합니다.
CControlBar::CalcFixedLayout 컨트롤 막대의 크기를 CSize 개체로 반환합니다.
CControlBar::CalcInsideRect 컨트롤 막대 영역의 현재 차원을 반환합니다. 테두리를 포함합니다.
CControlBar::D o그림판 컨트롤 막대의 테두리와 그리퍼를 렌더링합니다.
CControlBar::D rawBorders 컨트롤 막대의 테두리를 렌더링합니다.
CControlBar::D rawGripper 컨트롤 막대의 그리퍼를 렌더링합니다.
CControlBar::EnableDocking 컨트롤 막대를 도킹하거나 부동할 수 있습니다.
CControlBar::GetBarStyle 컨트롤 막대 스타일 설정을 검색합니다.
CControlBar::GetBorders 컨트롤 막대의 테두리 값을 검색합니다.
CControlBar::GetCount 컨트롤 막대에서 HWND가 아닌 요소의 수를 반환합니다.
CControlBar::GetDockingFrame 컨트롤 막대가 도킹된 프레임에 대한 포인터를 반환합니다.
CControlBar::IsFloating 문제의 컨트롤 막대가 부동 컨트롤 막대인 경우 0이 아닌 값을 반환합니다.
CControlBar::OnUpdateCmdUI 명령 UI 처리기를 호출합니다.
CControlBar::SetBarStyle 컨트롤 막대 스타일 설정을 수정합니다.
CControlBar::SetBorders 컨트롤 막대의 테두리 값을 설정합니다.
CControlBar::SetInPlaceOwner 컨트롤 막대의 현재 위치 소유자를 변경합니다.

공용 데이터 멤버

이름 설명
CControlBar::m_bAutoDelete 0이 CControlBar 아닌 경우 Windows 컨트롤 막대가 제거되면 개체가 삭제됩니다.
CControlBar::m_pInPlaceOwner 컨트롤 막대의 현재 위치 소유자입니다.

설명

컨트롤 막대는 일반적으로 프레임 창의 왼쪽 또는 오른쪽에 정렬되는 창입니다. 여기에는 Windows 메시지를 생성 및 응답하는 창인 HWND 기반 컨트롤 또는 Windows가 아니고 애플리케이션 코드 또는 프레임워크 코드에서 관리되는 비 HWND 기반 항목인 자식 항목이 포함될 수 있습니다. 목록 상자 및 편집 컨트롤은 HWND 기반 컨트롤의 예입니다. 상태 막대 창 및 비트맵 단추는 HWND 기반이 아닌 컨트롤의 예입니다.

컨트롤 바 창은 일반적으로 부모 프레임 창의 자식 창이며 일반적으로 프레임 창의 클라이언트 뷰 또는 MDI 클라이언트에 대한 형제입니다. 개체는 CControlBar 부모 창의 클라이언트 사각형에 대한 정보를 사용하여 위치를 지정합니다. 그런 다음 부모 창의 클라이언트 영역에서 할당되지 않은 공간을 다시 기본 부모 창에 알립니다.

자세한 CControlBar내용은 다음을 참조하세요.

상속 계층 구조

CObject

CCmdTarget

CWnd

CControlBar

요구 사항

헤더: afxext.h

CControlBar::CalcDynamicLayout

프레임워크는 이 멤버 함수를 호출하여 동적 도구 모음의 차원을 계산합니다.

virtual CSize CalcDynamicLayout(
    int nLength,
    DWORD nMode);

매개 변수

nLength
dwMode에 따라 가로 또는 세로 컨트롤 막대의 요청된 차원입니다.

nMode
다음 미리 정의된 플래그는 동적 컨트롤 막대의 높이와 너비를 결정하는 데 사용됩니다. 비트 OR(|) 연산자를 사용하여 플래그를 결합합니다.

레이아웃 모드 플래그 의미
LM_STRETCH 컨트롤 막대를 프레임 크기로 확장해야 하는지 여부를 나타냅니다. 막대가 도킹 막대가 아닌 경우 설정합니다(도킹에 사용할 수 없음). 막대가 도킹되거나 부동일 때 설정되지 않습니다(도킹에 사용 가능). 설정된 경우 LM_STRETCH nLength무시하고 LM_HORZ 상태에 따라 차원을 반환합니다. LM_STRETCH CalcFixedLayout사용되는 bStretch 매개 변수와 유사하게 작동합니다. 스트레칭과 방향 간의 관계에 대한 자세한 내용은 해당 멤버 함수를 참조하세요.
LM_HORZ 막대가 가로 또는 세로 방향임을 나타냅니다. 가로 방향 막대가 세로 방향이면 설정되지 않습니다. LM_HORZ CalcFixedLayout사용되는 bHorz 매개 변수와 유사하게 작동합니다. 스트레칭과 방향 간의 관계에 대한 자세한 내용은 해당 멤버 함수를 참조하세요.
LM_MRUWIDTH 가장 최근에 사용한 동적 너비입니다. nLength 매개 변수를 무시하고 가장 최근에 사용한 것으로 기억되는 너비를 사용합니다.
LM_HORZDOCK 가로 도킹된 차원입니다. nLength 매개 변수를 무시하고 너비가 가장 큰 동적 크기를 반환합니다.
LM_VERTDOCK 세로 도킹된 차원입니다. nLength 매개 변수를 무시하고 높이가 가장 큰 동적 크기를 반환합니다.
LM_LENGTHY nLength가 너비 대신 높이(Y 방향)를 나타내는 경우 설정합니다.
LM_COMMIT LM_MRUWIDTH 부동 컨트롤 막대의 현재 너비로 다시 설정합니다.

Return Value

CSize 개체의 컨트롤 막대 크기(픽셀)입니다.

설명

파생 클래스에서 고유한 동적 레이아웃을 제공하도록 이 멤버 함수를 재정의 CControlBar합니다. CToolbar와 같이 파생된 CControlBarMFC 클래스는 이 멤버 함수를 재정의하고 고유한 구현을 제공합니다.

CControlBar::CalcFixedLayout

이 멤버 함수를 호출하여 컨트롤 막대의 가로 크기를 계산합니다.

virtual CSize CalcFixedLayout(
    BOOL bStretch,
    BOOL bHorz);

매개 변수

bStretch
막대를 프레임 크기로 확장해야 하는지 여부를 나타냅니다. bStretch 매개 변수는 막대가 도킹 막대(도킹에 사용할 수 없음)가 아니고 도킹 또는 부동(도킹에 사용 가능)이면 0이 아닌 경우 0이 아닙니다.

bHorz
막대가 가로 또는 세로 방향임을 나타냅니다. 가로 방향이면 bHorz 매개 변수가 0이 아니고 세로 방향이면 0입니다.

Return Value

개체의 컨트롤 막대 크기(픽셀)입니다 CSize .

설명

도구 모음과 같은 컨트롤 막대는 컨트롤 막대에 포함된 단추를 수용하기 위해 가로 또는 세로로 확장할 수 있습니다.

bStretch가 TRUE이면 bHorz에서 제공하는 방향을 따라 차원을 늘립니다. 즉, bHorz가 FALSE이면 컨트롤 막대가 세로로 확장됩니다. bStretch가 FALSE이면 스트레치가 발생하지 않습니다. 다음 표에서는 bStretch 및 bHorz의 가능한 순열 및 결과 컨트롤 바 스타일을 보여 줍니다.

bStretch bHorz 스트레칭 Orientation 도킹/도킹 안 함
TRUE TRUE 가로 늘이기 가로 방향 도킹 안 함
TRUE FALSE 세로 늘이기 세로 방향 도킹 안 함
FALSE TRUE 사용할 수 있는 스트레칭 없음 가로 방향 도킹
FALSE FALSE 사용할 수 있는 스트레칭 없음 세로 방향 도킹

CControlBar::CalcInsideRect

프레임워크는 이 함수를 호출하여 컨트롤 막대의 클라이언트 영역을 계산합니다.

virtual void CalcInsideRect(
    CRect& rect,
    BOOL bHorz) const;

매개 변수

rect
컨트롤 막대의 현재 차원을 포함합니다. 테두리를 포함합니다.

bHorz
막대가 가로 또는 세로 방향임을 나타냅니다. 가로 방향이면 bHorz 매개 변수가 0이 아니고 세로 방향이면 0입니다.

설명

이 함수는 컨트롤 막대가 그려지기 전에 호출됩니다.

컨트롤 막대의 테두리 및 그리퍼 막대 렌더링을 사용자 지정하려면 이 함수를 재정의합니다.

CControlBar::CControlBar

CControlBar 개체를 생성합니다.

CControlBar();

CControlBar::D o그림판

컨트롤 막대의 테두리와 그리퍼 막대를 렌더링하기 위해 프레임워크에서 호출됩니다.

virtual void DoPaint(CDC* pDC);

매개 변수

pDC
컨트롤 막대의 테두리와 그리퍼를 렌더링하는 데 사용할 디바이스 컨텍스트를 가리킵니다.

설명

컨트롤 막대의 그리기 동작을 사용자 지정하려면 이 함수를 재정의합니다.

또 다른 사용자 지정 방법은 및 DrawGripper 함수를 재정의 DrawBorders 하고 테두리 및 그리기에 대한 사용자 지정 그리기 코드를 추가하는 것입니다. 이러한 메서드는 기본 DoPaint 메서드에 의해 호출되므로 재정의 DoPaint 가 필요하지 않습니다.

CControlBar::D rawBorders

컨트롤 막대의 테두리를 렌더링하기 위해 프레임워크에서 호출됩니다.

virtual void DrawBorders(
    CDC* pDC,
    CRect& rect);

매개 변수

pDC
컨트롤 막대의 테두리를 렌더링하는 데 사용할 디바이스 컨텍스트를 가리킵니다.

rect
CRect 컨트롤 막대의 크기를 포함하는 개체입니다.

설명

컨트롤 막대 테두리의 모양을 사용자 지정하려면 이 함수를 재정의합니다.

CControlBar::D rawGripper

컨트롤 막대의 그리퍼를 렌더링하기 위해 프레임워크에서 호출됩니다.

virtual void DrawGripper(
    CDC* pDC,
    const CRect& rect);

매개 변수

pDC
컨트롤 막대 그리퍼를 렌더링하는 데 사용할 디바이스 컨텍스트를 가리킵니다.

rect
CRect 컨트롤 막대 그리퍼의 크기를 포함하는 개체입니다.

설명

컨트롤 막대 그리퍼의 모양을 사용자 지정하려면 이 함수를 재정의합니다.

CControlBar::EnableDocking

컨트롤 막대를 도킹할 수 있도록 하려면 이 함수를 호출합니다.

void EnableDocking(DWORD dwDockStyle);

매개 변수

dwDockStyle
컨트롤 막대가 도킹을 지원하는지 여부와 컨트롤 막대를 도킹할 수 있는 부모 창의 측면(지원되는 경우)을 지정합니다. 다음 중 하나 이상이 될 수 있습니다.

  • CBRS_ALIGN_TOP 클라이언트 영역의 맨 위에 도킹을 허용합니다.

  • CBRS_ALIGN_BOTTOM 클라이언트 영역의 맨 아래에 도킹을 허용합니다.

  • CBRS_ALIGN_LEFT 클라이언트 영역의 왼쪽에 도킹을 허용합니다.

  • CBRS_ALIGN_RIGHT 클라이언트 영역의 오른쪽에 도킹을 허용합니다.

  • CBRS_ALIGN_ANY 클라이언트 영역의 어느 쪽에서나 도킹을 허용합니다.

  • CBRS_FLOAT_MULTI 여러 컨트롤 막대를 단일 미니 프레임 창에 부동할 수 있습니다.

0이면(즉, 플래그 없음을 나타낸) 컨트롤 막대가 도킹되지 않습니다.

설명

지정된 측면은 대상 프레임 창에서 도킹을 사용하도록 설정된 측면 중 하나와 일치해야 합니다. 그렇지 않으면 컨트롤 막대를 해당 프레임 창에 도킹할 수 없습니다.

CControlBar::GetBarStyle

이 함수를 호출하여 현재 컨트롤 막대에 대해 설정된 CBRS_(컨트롤 막대 스타일) 설정을 결정합니다.

DWORD GetBarStyle();

Return Value

컨트롤 막대의 현재 CBRS_ (컨트롤 막대 스타일) 설정입니다. 사용 가능한 스타일의 전체 목록은 CControlBar::SetBarStyle을 참조하세요.

설명

WS_(창 스타일) 스타일을 처리하지 않습니다.

CControlBar::GetBorders

컨트롤 막대의 현재 테두리 값을 반환합니다.

CRect GetBorders() const;

Return Value

CRect 컨트롤 막대 개체의 각 면에 있는 현재 너비(픽셀)를 포함하는 개체입니다. 예를 들어 CRect 개체의 왼쪽 멤버 값은 왼쪽 테두리의 너비입니다.

CControlBar::GetCount

개체의 비 HWND 항목 CControlBar 수를 반환합니다.

int GetCount() const;

Return Value

개체의 비 HWND 항목 수 CControlBar 입니다. 이 함수는 CDialogBar 개체에 대해 0을 반환합니다.

설명

항목의 형식은 CStatusBar 개체의 창과 CToolBar 개체의 단추 및 구분 기호와 같은 파생 개체에 따라 달라집니다.

CControlBar::GetDockingFrame

이 멤버 함수를 호출하여 컨트롤 막대가 도킹된 현재 프레임 창에 대한 포인터를 가져옵니다.

CFrameWnd* GetDockingFrame() const;

Return Value

성공하면 프레임 창에 대한 포인터입니다. 그렇지 않으면 NULL입니다.

컨트롤 막대가 프레임 창에 도킹되지 않은 경우(즉, 컨트롤 막대가 부동하는 경우) 이 함수는 부모 CMiniFrameWnd에 대한 포인터를 반환합니다.

설명

도킹 가능한 컨트롤 막대에 대한 자세한 내용은 CControlBar::EnableDockingCFrameWnd::D ockControlBar를 참조하세요.

CControlBar::IsFloating

이 멤버 함수를 호출하여 컨트롤 막대가 부동 또는 도킹되었는지 확인합니다.

BOOL IsFloating() const;

Return Value

컨트롤 막대가 부동하는 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

컨트롤 막대의 상태를 도킹에서 부동으로 변경하려면 CFrameWnd::FloatControlBar를 호출합니다.

CControlBar::m_bAutoDelete

0이 CControlBar 아닌 경우 Windows 컨트롤 막대가 제거되면 개체가 삭제됩니다.

BOOL m_bAutoDelete;

설명

m_bAutoDelete BOOL 형식의 공용 변수입니다.

컨트롤 바 개체는 일반적으로 프레임 창 개체에 포함됩니다. 이 경우 프레임 창이 제거될 때 포함된 컨트롤 바 개체가 제거되므로 m_bAutoDelete 0입니다.

힙에 개체를 할당 CControlBar 하고 호출 delete할 계획이 없는 경우 이 변수를 0이 아닌 값으로 설정합니다.

CControlBar::m_pInPlaceOwner

컨트롤 막대의 현재 위치 소유자입니다.

CWnd* m_pInPlaceOwner;

CControlBar::OnUpdateCmdUI

이 멤버 함수는 프레임워크에서 도구 모음 또는 상태 막대의 상태 업데이트하기 위해 호출됩니다.

virtual void OnUpdateCmdUI(
    CFrameWnd* pTarget,
    BOOL bDisableIfNoHndler) = 0;

매개 변수

pTarget
애플리케이션의 기본 프레임 창을 가리킵니다. 이 포인터는 업데이트 메시지를 라우팅하는 데 사용됩니다.

bDisableIfNoHndler
업데이트 처리기가 없는 컨트롤이 비활성화된 것으로 자동으로 표시되어야 하는지 여부를 나타내는 플래그입니다.

설명

개별 단추 또는 창을 업데이트하려면 메시지 맵에서 ON_UPDATE_COMMAND_UI 매크로를 사용하여 업데이트 처리기를 적절하게 설정합니다. 이 매크로 사용에 대한 자세한 내용은 ON_UPDATE_COMMAND_UI 참조하세요.

OnUpdateCmdUI 는 애플리케이션이 유휴 상태일 때 프레임워크에서 호출됩니다. 업데이트할 프레임 창은 최소한 간접적으로 표시되는 프레임 창의 자식 창이어야 합니다. OnUpdateCmdUI 는 재정의 가능한 고급입니다.

CControlBar::SetBarStyle

이 함수를 호출하여 컨트롤 막대에 원하는 CBRS_ 스타일을 설정합니다.

void SetBarStyle(DWORD dwStyle);

매개 변수

dwStyle
컨트롤 막대에 원하는 스타일입니다. 다음 중 하나 이상이 될 수 있습니다.

  • CBRS_ALIGN_TOP 컨트롤 막대를 프레임 창의 클라이언트 영역 맨 위에 도킹할 수 있습니다.

  • CBRS_ALIGN_BOTTOM 컨트롤 막대를 프레임 창의 클라이언트 영역 아래쪽에 도킹할 수 있습니다.

  • CBRS_ALIGN_LEFT 컨트롤 막대를 프레임 창의 클라이언트 영역 왼쪽에 도킹할 수 있습니다.

  • CBRS_ALIGN_RIGHT 컨트롤 막대를 프레임 창의 클라이언트 영역 오른쪽에 도킹할 수 있습니다.

  • CBRS_ALIGN_ANY 컨트롤 막대를 프레임 창의 클라이언트 영역의 어느 쪽에나 도킹할 수 있습니다.

  • CBRS_BORDER_TOP 표시될 때 컨트롤 막대의 위쪽 가장자리에 테두리를 그립니다.

  • CBRS_BORDER_BOTTOM 표시될 때 컨트롤 막대의 아래쪽 가장자리에 테두리를 그립니다.

  • CBRS_BORDER_LEFT 표시될 때 컨트롤 막대의 왼쪽 가장자리에 테두리를 그립니다.

  • CBRS_BORDER_RIGHT 표시될 때 컨트롤 막대의 오른쪽 가장자리에 테두리를 그립니다.

  • CBRS_FLOAT_MULTI 여러 컨트롤 막대를 단일 미니 프레임 창에 부동할 수 있습니다.

  • CBRS_TOOLTIPS 컨트롤 막대에 대한 도구 팁을 표시합니다.

  • CBRS_FLYBY 도구 팁과 동시에 메시지 텍스트를 업데이트합니다.

  • CBRS_GRIPPER 개체의 밴드에서 CReBar 사용되는 것과 유사한 그리기가 파생 CControlBar클래스에 대해 그려지도록 합니다.

설명

WS_(창 스타일) 설정에는 영향을 주지 않습니다.

CControlBar::SetBorders

컨트롤 막대의 테두리 크기를 설정하려면 이 함수를 호출합니다.

void SetBorders(
    int cxLeft = 0,
    int cyTop = 0,
    int cxRight = 0,
    int cyBottom = 0);

void SetBorders(LPCRECT lpRect);

매개 변수

cxLeft
컨트롤 막대 왼쪽 테두리의 너비(픽셀)입니다.

cyTop
컨트롤 막대 위쪽 테두리의 높이(픽셀)입니다.

cxRight
컨트롤 막대 오른쪽 테두리의 너비(픽셀)입니다.

cyBottom
컨트롤 막대 아래쪽 테두리의 높이(픽셀)입니다.

lpRect
컨트롤 막대 개체의 각 테두리의 현재 너비(픽셀)를 포함하는 CRect 개체에 대한 포인터입니다.

예시

다음 코드 예제에서는 컨트롤 막대의 위쪽 및 아래쪽 테두리를 5픽셀로 설정하고 왼쪽 및 오른쪽 테두리를 2픽셀로 설정합니다.

CControlBar &m_myControlBar = m_Rebar;
m_myControlBar.SetBorders(2, 5, 2, 5);

CControlBar::SetInPlaceOwner

컨트롤 막대의 현재 위치 소유자를 변경합니다.

void SetInPlaceOwner(CWnd* pWnd);

매개 변수

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

설명

참고 항목

MFC 샘플 CTRLBAR
CWnd 클래스
계층 구조 차트
CToolBar 클래스
CDialogBar 클래스
CStatusBar 클래스
CReBar 클래스