TN031: 컨트롤 막대
[!참고]
온라인 설명서의을 처음 포함 되었습니다 때문 다음 기술 참고 업데이트 되지 않았습니다.따라서 일부 절차 및 항목 오래 되었거나 잘못 된 수 있습니다.최신 정보는 온라인 설명서 색인에서 관심 있는 주제에 대해 검색 하는 것이 좋습니다.
이 참고는 컨트롤 막대 클래스를 MFC 설명: 일반 제공, 프로그램, CToolBar, CDialogBar, 및 CDockBar.
CControlBar
A ControlBar 되는 CWnd-파생 클래스:
위쪽 이나 아래쪽의 프레임 창에 맞춥니다.
어느 HWND 기반 컨트롤은 자식 항목을 포함할 수 있습니다 (예를 들어, CDialogBar) 또는 비-HWND 항목을 기준으로 (예를 들어, CToolBar, CStatusBar).
컨트롤 막대 추가 스타일을 지원합니다.
CBRS_TOP(기본값) 컨트롤 막대 위쪽에 고정 합니다.
CBRS_BOTTOM컨트롤 막대 아래쪽에 고정 합니다.
CBRS_NOALIGN부모 크기가 조정 될 때 컨트롤 막대 위치를 변경 하지 않습니다.
파생 클래스에서 CControlBar 흥미로운 구현을 제공 합니다.
CStatusBar상태 표시줄에서 항목 텍스트가 포함 된 상태 표시줄 창입니다.
CToolBar도구 모음 항목 행에 정렬 된 비트맵 단추입니다.
CDialogBar표준 windows에 포함 된 도구 모음 같은 프레임 컨트롤 (대화 상자 템플릿 리소스에서 만든).
CDockBar A 일반화 도킹 영역에 대 한 다른 CControlBar 개체에서 파생 됩니다.특정 멤버 함수와 변수를이 클래스에 사용할 수 있는 향후 릴리스에서 변경 될 수 있습니다.
모든 컨트롤 막대 개체 또는 windows의 일부 부모 프레임 창의 자식 창이 됩니다.이들은 일반적으로 형제 노드로 (예를 들어, MDI 클라이언트 또는 보기)를 사용 하 여 프레임의 클라이언트 영역에 추가 됩니다.자식 창 ID 컨트롤 막대의 중요합니다.기본 레이아웃 컨트롤 막대의 범위의 Id 가진 컨트롤 막대에만 AFX_IDW_CONTROLBAR_FIRST 에 AFX_IDW_CONTROLBAR_LAST.참고 256 제어 범위 이지만 직접 인쇄 미리 보기 아키텍처에서 지원 되므로 막대 Id를 첫 번째 32이 컨트롤 막대의 Id 특별 한입니다.
CControlBar 클래스에 대 한 표준 구현을 제공 합니다.
컨트롤 막대를 위쪽, 아래쪽, 또는 프레임의 양쪽에 맞춥니다.
컨트롤 항목의 배열을 할당 합니다.
파생 된 클래스의 구현을 지원 합니다.
C + + 컨트롤 막대 개체의 구성원으로 포함 될 일반적으로 CFrameWnd 클래스에서 파생 하 고 때까지 치료할 수 부모 HWND 및 개체는 소멸 됩니다.컨트롤 막대 개체는 힙에 할당 해야 하는 경우 간단 하 게 설정할 수 있습니다는 m_bAutoDestruct 멤버를 TRUE 컨트롤 모음을 만들려면 "이 삭제" 때의 HWND 소멸 됩니다.
[!참고]
직접 만들 경우 CControlBar-MFC의 중 하나를 사용 하 여, 같은 파생 클래스 대신 파생 클래스에서 CStatusBar, CToolBar, 또는 CDialogBar, 설정 해야 합니다는 m_dwStyle 데이터 멤버입니다.이 재정의를 수행할 수 있습니다 만들기:
// CMyControlBar is derived from CControlBar
BOOL CMyControlBar::Create( CWnd* pParentWnd, DWORD dwStyle, UINT nID )
{
m_dwStyle = dwStyle;
.
.
.
}
컨트롤 막대 레이아웃 알고리즘
컨트롤 막대 레이아웃 알고리즘은 아주 간단합니다.프레임 창에 메시지를 보냅니다 WM_SIZEPARENT 모든 자식 컨트롤 막대 범위에 있습니다.이 메시지와 함께 클라이언트 사각형의 부모에 대 한 포인터를 전달 됩니다.어린이를 z이이 메시지가 보내집니다.컨트롤 막대 자식을 자신을 배치 하 고 부모의 클라이언트 영역의 크기를 줄이기 위해이 정보를 사용 합니다.일반 클라이언트 영역에 대 한 (더 적은 컨트롤 막대) 남아 있는 마지막 사각형이 주 클라이언트 창 (일반적으로 MDI 클라이언트 나 뷰 분할자 창)의 위치를 사용 합니다.
참조 CWnd::RepositionBars 및 CFrameWnd::RecalcLayout 자세한 내용은.
MFC 개인 Windows 메시지를 포함 하 여 WM_SIZEPARENT에 나오는 기술 노트 24.
CStatusBar
상태 표시줄 텍스트 출력 창 행이 있는 컨트롤 막대가입니다.텍스트 출력 창을 사용 하는 일반적인 방법 두 가지 있습니다.
메시지 줄으로
(예를 들어, 표준 메뉴 도움말 메시지 줄).이러한 일반적으로 0 기반 인덱스에 액세스 하는
상태 표시등
(예: NUM, SCRL 캡 지표).이러한 문자열/명령 ID가 일반적으로 액세스
상태 표시줄에 대 한 글꼴은 10 포인트 MS Sans Serif (10 포인트 (스위스) 가변 폭 글꼴의 글꼴 매퍼 가장 일치 하거나 Windows 인터페이스 응용 프로그램 디자인 가이드에 따라 결정)입니다.일본어 버전을 같은 특정 버전의 Windows에서 선택한 글꼴 다릅니다.
상태 표시줄에 사용 되는 색도 Windows 인터페이스 응용 프로그램 디자인 가이드의 권장 사항에 일관성이 있습니다.이러한 색 하드 코딩 된 및 제어판의 사용자 지정에 대 한 응답으로 동적으로 변경 됩니다.
항목 |
Windows 색상 값 |
기본 RGB |
---|---|---|
상태 표시줄 배경 |
COLOR_BTNFACE |
RGB (192, 192, 192) |
상태 표시줄 텍스트 |
COLOR_BTNTEXT |
RGB (000, 000, 000) |
상태 표시줄 위쪽/왼쪽 가장자리 |
COLOR_BTNHIGHLIGHT |
RGB (255, 255, 255) |
상태 표시줄 봇/오른쪽 가장자리 |
COLOR_BTNSHADOW |
RGB (128, 128, 128) |
CCmdUI 지원 프로그램
표시기는 일반적으로 업데이트 하는 방식을 통해 되는 ON_UPDATE_COMMAND_UI 메커니즘입니다.유휴 시간에 호출 하는 상태 표시줄의 ON_UPDATE_COMMAND_UI 처리기 표시기 창의 문자열 id.
ON_UPDATE_COMMAND_UI 처리기를 호출할 수 있습니다.
사용: 창 사용할지 여부.비활성된 창에 활성화 된 창 처럼 정확 하 게 보이지만 텍스트가 표시 되지 않습니다 (즉, 텍스트 표시기 끄기 바뀜).
SetText: 텍스트를 변경할 수 있습니다.창에 자동으로 크기가 조정 되지 않으므로이 경우 주의 해야 합니다.
클래스를 참조 하십시오. 프로그램 에 클래스 라이브러리 참조 에 대 한 자세한 내용은 CStatusBar 만들기 및 사용자 지정 Api.대부분의 사용자 지정 상태 표시줄 상태 표시줄 처음 표시 하기 전에 이루어져야 합니다.
상태 표시줄에 하나의 늘이기 창, 일반적으로 첫 번째 창 지원합니다.창 크기는 실제로 최소 크기가입니다.상태 표시줄 모든 창의 최소 크기 보다 큰 경우 모든 추가 너비를 늘이기 창에 주어 집니다.첫 번째 창 폭이 유동적 이므로 캡 NUM, SCRL에 대 한 기본 응용 프로그램에 상태 표시줄 표시기 오른쪽 맞춤 있습니다.
CToolBar
도구 모음 컨트롤 막대에 행 구분 기호를 포함할 수 있는 비트맵 단추입니다.두 가지 스타일 단추를 지원: 누름 단추 및 확인란 단추.확인란 단추와 라디오 그룹 기능을 빌드할 수 있습니다 및 ON_UPDATE_COMMAND_UI.
도구 모음에서 비트맵 단추를 모두 하나의 비트맵에서 가져온 것입니다.이 비트맵 이미지 또는 각 단추에 대 한 문자 모양을 포함 해야 합니다.일반적으로 비트맵에서 이미지/글리프 순서 화면에 그릴지 순서와 같습니다.(이 사용자 지정은 Api를 사용 하 여 변경할 수 있습니다.)
각 단추는 동일한 크기 여야 합니다.기본값은 표준 (24 x 22 픽셀)입니다.각 이미지/문자 모양 같은 크기 이어야 합니다 및 좌우로 나란히 있어야 비트맵에서입니다.기본 이미지/글리프 크기는 16 x 15 픽셀입니다.따라서 (표준 크기를 사용 하 여) 10 개의 단추가 있는 도구 모음에 대 한 160 픽셀로 및 높은 15 픽셀 비트맵을 해야 합니다.
각 단추 하나만 이미지/문자 모양입니다.다른 단추 상태와 스타일 (아래로, 위로, 누른 예 비활성화, 아래로 비활성화 비활성화)는 하나의 이미지/상형 문자에서 알고리즘 생성 됩니다.모든 색 비트맵 또는 DIB 이론적으로는 사용할 수 있습니다.다른 단추를 생성 하는 알고리즘 경우 원본 이미지의 회색 음영 작동을 가장 잘 나와 있습니다.볼 때 표준 도구 모음 단추 및 MFC 일반 샘플에 제공 된 도구 모음 단추 클립 아트 클립 아트 에 대 한 예제입니다.
도구 모음에서 사용 되는 색 Windows 인터페이스 응용 프로그램 디자인 가이드의 권장 사항에 일관 된 이기도 합니다.이러한 색 하드 코딩 된 및 제어판의 사용자 지정에 대 한 응답으로 동적으로 변경 됩니다.
항목 |
Windows 색상 값 |
기본 RGB |
---|---|---|
도구 모음 배경 |
COLOR_BTNFACE |
RGB(192,192,192) |
도구 모음 단추를 위쪽/왼쪽 가장자리 |
COLOR_BTNHIGHLIGHT |
RGB(255,255,255) |
봇/오른쪽 가장자리 도구 모음 단추 |
COLOR_BTNSHADOW |
RGB(128,128,128) |
또한 표준 Windows 단추 컨트롤 처럼 도구 모음 비트맵 단추 색입니다.비트맵 리소스에서 및 변경에 대 한 응답으로 사용자 지정 컨트롤 패널에서 시스템 색에 대 한 응답으로 로드 될 때이 다시 칠하는 발생 합니다.있으므로 주의 해 서 사용 해야 다음 색상 도구 모음 비트맵을 자동으로 다시 칠한 됩니다.색을 비트맵의 일부를 하지 않을 경우 다음 자세히 매핑된 RGB 값 중 하나를 대략적으로 나타내는 색을 사용 합니다.매핑은 정확한 RGB 값에 따라 수행 됩니다.
RGB 값입니다. |
동적으로 매핑된 색 값 |
---|---|
RGB (000, 000, 000) |
COLOR_BTNTEXT |
RGB (128, 128, 128) |
COLOR_BTNSHADOW |
RGB (192, 192, 192) |
COLOR_BTNFACE |
RGB (255, 255, 255) |
COLOR_BTNHIGHLIGHT |
클래스를 참조 하십시오. CToolBar 의 클래스 라이브러리 참조 에 대 한 자세한 내용은 CToolBar 만들기 및 사용자 지정 Api.대부분의 사용자 지정 도구 모음에 도구 모음 표시 처음 되기 전에 이루어져야 합니다.
Api를 사용한 단추 Id에서 스타일을 조정할 수 있는 사용자 지정 공백 너비와 이미지/글리프는 어떤 단추를 사용 합니다.기본적으로 이러한 Api를 사용 하지 않아도 됩니다.
CToolBar CCmdUI 지원
도구 모음 단추 항상 업데이트 하는 방식을 통해 되는 ON_UPDATE_COMMAND_UI 메커니즘입니다.유휴 시간에 호출 하는 도구 모음은 ON_UPDATE_COMMAND_UI 처리기는 해당 단추의 명령 ID 사용 합니다.ON_UPDATE_COMMAND_UI구분 기호에 대 한 호출 되지 않지만 누름 단추 및 확인란 단추에 대 한 호출입니다.
ON_UPDATE_COMMAND_UI 처리기를 호출할 수 있습니다.
사용: 단추를 사용할지 여부.누름 단추 및 확인란 단추에 동일 하 게 작동합니다.
SetCheck: 단추의 선택 상태를 설정.이 도구 모음 단추에 대 한 호출 확인란 단추에 설정 됩니다.SetCheck(선택) 0, 1 (확인란 선택) 또는 2 (확정) 매개 변수 사용
SetRadio: 대표 속성에 대 한 SetCheck.
확인란 단추에는 "자동" 확인란 단추입니다. 사용자가 누를 때, 이들은 바로 상태가 변경 됩니다.체크 다운 되었거나 눌러진 상태가입니다."확정 되지 않음" 상태로 단추를 변경 하려면 기본 제공 사용자 인터페이스 방법이 없습니다. 해당 코드를 통해 수행 되어야 합니다.
Api 사용자 지정 된 도구 모음 단추의 상태를 변경할 수 허용 됩니다, 가령에서 이러한 상태를 변경 해야를 ON_UPDATE_COMMAND_UI 명령을 도구 모음 단추를 나타냅니다.기억, 유휴 처리 변경 도구 모음 단추와 상태는 ON_UPDATE_COMMAND_UI 다음 후 이러한 상태를 통해 Setbuttonstyle에 대 한 변경 내용이 손실 될 수도 있고 하도록 처리기를 유휴.
도구 모음 단추를 보내고 WM_COMMAND 기본 단추 또는 메뉴 항목 같은 메시지 및 정상적으로 처리 되는 ON_COMMAND 처리기에서 제공 하는 동일한 클래스의 ON_UPDATE_COMMAND_UI 처리기.
표시 상태에 사용할 네 개의 도구 모음 단추 스타일 (TBBS_ 값)입니다.
TBBS_CHECKED: 현재 (아래로) 확인란이 됩니다.
TBBS_INDETERMINATE: 확인란은 현재 정해져 있지 않습니다.
TBBS_DISABLED: 현재 단추를 사용할 수 있습니다.
TBBS_PRESSED: 단추 현재 눌러져 있습니다.
6 공식 Windows 인터페이스 응용 프로그램 디자인 가이드 단추 스타일은 다음 TBBS 값으로 표현 됩니다.
최대 = 0
마우스를 TBBS_PRESSED = (| 다른 스타일)
사용 안함 = TBBS_DISABLED
아래로 TBBS_CHECKED =
TBBS_CHECKED = 아래로 사용 안함 | TBBS_DISABLED
정해 지지 않은 TBBS_INDETERMINATE =
CDialogBar
대화 상자 표시줄에 표준 Windows 컨트롤을 포함 하는 컨트롤 모음이입니다.컨트롤을 포함 하 고 그 사이 tab 키를 지 원하는 대화 상자와 같은 역할을 하 고.대화 상자 템플릿을 막대를 나타내는 데 사용 하는 대화 상자와 마찬가지로 역할도 합니다.
A CDialogBar 표준 누름 단추 컨트롤이 포함 되어 있는 인쇄 미리 보기 도구 모음에 사용 됩니다.
사용 하는 CDialogBar 처럼 사용 되는 CFormView.대화 상자 표시줄에 있는 대화 상자 템플릿을 정의 하 고 제외한 모든 스타일을 제거 해야 WS_CHILD.대화 상자가 표시 되어야 합니다 유의 하십시오입니다.
컨트롤에 대 한 알림을 CDialogBar (마찬가지로 도구 모음 단추) 컨트롤 막대의 부모에 전송 됩니다.
CCmdUI CDialogBar 지원
대화 상자 모음 단추를 통해 업데이트 해야 해당 ON_UPDATE_COMMAND_UI 처리기 메커니즘입니다.유휴 시 호출할 대화 상자 표시줄의 ON_UPDATE_COMMAND_UI 처리기는 ID가 있는 모든 단추의 명령 ID 가진 > 0x8000 = (즉, 명령 Id의 범위에서).
ON_UPDATE_COMMAND_UI 처리기를 호출할 수 있습니다.
사용:를 사용 또는 사용 안 함 단추.
SetText: 단추 텍스트를 변경할 수 있습니다.
사용자 지정 표준 창 관리자 Api를 통해 수행할 수 있습니다.