이 노트에서는 mfc에서 컨트롤 막대 클래스를 설명 했다: 일반 CControlBar, CStatusBar, CToolBar, CDialogBar및 CDockBar。
ControlBar CWnd입니다-파생 되는 클래스:
컨트롤 막대 추가 스타일 지원:
CControlBar 에서 파생 된 클래스는 더 흥미로운 구현을 제공합니다:
모든 컨트롤 막대 개체/윈도우 일부 부모 프레임 창의 자식 창이 될 것입니다. 그들은 일반적으로 (예를 들어,: MDI 클라이언트 또는 뷰) 프레임의 클라이언트 영역을 형제로 추가 됩니다. 컨트롤 막대의 자식 창 ID 하는 것이 중요 합니다. 컨트롤 막대의 기본 레이아웃 컨트롤 막대 Id로 AFX_IDW_CONTROLBAR_LAST를 AFX_IDW_CONTROLBAR_FIRST 의 범위에만 작동합니다. 비록 256 제어 범위 유의 Id, 바 이러한 컨트롤 막대의 첫 번째 32 Id는 특별 한 때문에 그들은 직접 인쇄 미리 보기 아키텍처 지원。
CControlBar 클래스에 대 한 표준 구현 제공
C + + 컨트롤 막대 개체의 CFrameWnd 파생 클래스, 구성원과 부모 HWND 및 개체 소멸 청소로 일반적으로 포함 됩니다. 컨트롤 막대 개체 힙에 할당 해야 하는 경우 설정할 수 있습니다 단순히 m_bAutoDestruct 구성원을 TRUE 로 HWND 소멸 되는 컨트롤 바 "이 삭제"를 만들。
중요nbsp;??자신의 CControlBar만들 경우-MFC의 중 하나를 사용 하는 대신 파생된 클래스를 파생 클래스의 CDialogBar CStatusBar, CToolBar, 등, m_dwStyle 데이터 멤버를 설정 해야 합니다. Create 의 재정의 수행할 수 있습니다(&N).:
/ / Cmycontrolbar에서 CControlBar 파생
BOOL CMyControlBar::Create (CWnd * pParentWnd, DWORD dwStyle, UINT nID)
{
nbsp; m_dwStyle = dwStyle;
.
? .
? .
}(&N)
컨트롤 막대 레이아웃 알고리즘
컨트롤 막대 레이아웃 알고리즘은 아주 간단 합니다. 프레임 창의 컨트롤 막대 범위에 있는 모든 어린이 WM_SIZEPARENT 메시지를 보냅니다. 이 메시지와 함께 상위의 클라이언트 사각형에 대 한 포인터가 전달 됩니다. 이 메시지는 Z 순서에서 아이 들에 게 전송 됩니다. 컨트롤 막대 어린이이 정보를 사용 하 여 스스로를 위치 하 고 상위의 클라이언트 영역 크기를 줄입니다. 일반 클라이언트 영역 (더 적은 컨트롤 바)에 대 한 남아 있는 최종 사각형 주 클라이언트 창 (일반적으로 MDI 클라이언트, 보기 또는 분할자 창) 위치를 사용 하는。
자세한 내용은 CWnd::RepositionBars 및 CFrameWnd::RecalcLayout 를 참조 하십시오.
기술 노트 24 에서 WM_SIZEPARENT을 포함 한 MFC 개인 Windows 메시지를 설명 하는。
상태 표시줄 텍스트 출력 창 행이 있는 컨트롤 막대가입니다. 두 가지 일반적인 텍스트 출력 창을 사용 하 여:
(예를 들어, 표준 메뉴 도움말 메시지 줄). 이러한 일반적으로 0-기반 하는 인덱싱된 액세스
(예를 들어, CAP NUM, SCRL 표시기). 이러한 일반적으로 문자열/명령 ID로 액세스。
상태 표시줄에 대 한 글꼴은 10 포인트 "MS Sans Serif" (Windows 인터페이스 응용 프로그램 디자인 가이드 또는 10 포인트 스위스 비례 글꼴의 글꼴 매퍼 가장 일치에 의해 규정). Windows 4.0, 일본 판과 같은 특정 버전의 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) |
CStatusBar CCmdUI 지원
표시기는 일반적으로 업데이트 방법은 ON_UPDATE_COMMAND_UI 메커니즘을 통해입니다. 유휴 시간에 상태 표시줄 표시기 창 문자열 id ON_UPDATE_COMMAND_UI 처리기 호출。
ON_UPDATE_COMMAND_UI 처리기를 호출할 수 있습니다.:
CStatusBar CStatusBar 만들기 및 사용자 지정 Api에 대 한 자세한 내용은 클래스 라이브러리 참조 에서 클래스를 참조 하십시오. 상태 표시줄의 대부분의 사용자 지정 하기 전에 상태 표시줄 처음 보이는 이루어져야 한다。
상태 표시줄은 하나만 신축성 창, 일반적으로 첫 번째 창 지원합니다. 그 창의 크기는 정말 최소 크기입니다. 상태 표시줄 모든 창의 최소 크기 보다 더 큰 경우, 모든 여분의 폭 신축성 창에 주어 집니다. 첫 번째 창 신축성 이므로 모자 NUM, SCRL 표시기 오른쪽에 맞추어 정렬 된 겹쳐지지는 기본 응용 프로그램에 상태 표시줄에。
도구 모음 비트맵 단추 구분 기호를 포함할 수 있는 행과 컨트롤 막대입니다. 두 가지 스타일의 버튼은 지원: 푸시 버튼 및 확인란 단추. 라디오 그룹 기능 확인란 단추 및 ON_UPDATE_COMMAND_UI 건설이 될 수 있다。
도구 모음에서 모든 비트맵 단추 한 비트맵에서 가져옵니다. 이 비트맵에는 하나의 이미지 또는 각 단추에 대 한 글리프 포함 되어 있어야 합니다. 일반적으로 비트맵에서 이미지/글리프 순서 순서 화면에 그려진 것입니다. (이 변경할 수 있습니다 사용자 지정 Api를 사용 하 여.)
각 단추에는 동일한 크기 여야 합니다. 기본값은 표준 24 x 22 픽셀. 문자 모양 각 이미지 같은 크기 여야 하며 측면-의해-측면 해야 합니다. 비트맵에서. 기본 이미지/글리프 크기는 16 x 15 픽셀입니다. 따라서 해야 높은 15 픽셀 너비 160 픽셀은 비트맵 (표준 크기를 사용 하 여) 10 단추와 도구 모음에 대 한。
각 단추에는 단 하나의 이미지/문양. 다른 단추 상태 및 스타일 (예를 들어, 누르면,, 아래로, 부정형 비활성화) algorithmically 그 하나의 이미지 문양에서 생성 됩니다. 모든 컬러 비트맵 또는 DIB 이론에서 사용할 수 있습니다. 다른 버튼을 생성 하는 알고리즘 경우 원본 이미지의 회색 음영 최고의 작품을 말합니다. 표준 도구 모음 단추와 MFC 일반 샘플에 제공 된 도구 모음 단추 클립 아트 클립 아트 에 대 한 예제。
도구 모음에서 사용 되는 색 Windows 인터페이스 응용 프로그램 디자인 가이드의 추천과 함께 일관성이 있습니다. 이러한 색상 하드 코딩 되지 않습니다 및 컨트롤 패널을 통해 사용자 지정에 대 한 응답에서 동적으로 변경。
| 항목 | Windows 색상 값 | 기본 RGB |
| 도구 모음 배경 | COLOR_BTNFACE | RGB(192,192,192) |
| 도구 모음 단추 왼쪽 위 가장자리 | COLOR_BTNHIGHLIGHT | RGB(255,255,255) |
| 도구 모음 단추 봇/오른쪽 가장자리 | COLOR_BTNSHADOW | RGB(128,128,128) |
또한, 비록 그들이 표준 Windows 단추 컨트롤 도구 모음 비트맵 단추 recolored는. 이 다시 칠하기 비트맵 리소스에서 로드 컨트롤 패널을 통해 사용자 지정에 대 한 응답에서 시스템 색 변경에 대 한 응답에서 하는 경우 발생 합니다. 주의 함께 사용 되어야 합니다 그래서 도구 모음 비트맵에 다음 색이 자동으로 recolored 것입니다. Recolored는 당신의 비트맵의 일부를가지고 하지 않으려면 밀접 하 게 매핑된 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에 대 한 자세한 내용은. 대부분의 사용자 지정 도구 모음 도구 모음 표시 처음 이루어집니다 전에 이루어져야 한다。
사용자 지정 단추 Id, 스타일, 조정 Api를 사용할 수 있습니다 공백 너비와 문자 모양은 이미지 단추에 사용 됩니다. 기본적으로 하지 않아도 이러한 Api를 사용 하 여。
CToolBar CCmdUI 지원
도구 모음 단추는 항상 업데이트 방법은 ON_UPDATE_COMMAND_UI 메커니즘을 통해입니다. 유휴 시간에 도구 모음 단추 명령 id ON_UPDATE_COMMAND_UI 처리기를 호출 합니다. ON_UPDATE_COMMAND_UI 구분 기호에 대 한 호출 하지 않습니다 하지만 푸시 버튼 및 확인란 단추에 대 한 호출。
ON_UPDATE_COMMAND_UI 처리기를 호출할 수 있습니다.:
확인란 단추는 "자동" 확인란 단추; 즉, 사용자가 그들을 누르면 그들은 즉시 상태를 변경 됩니다. 확인 하는 것은 아래로 또는 우울 상태가입니다. 방법은 없습니다 기본 제공 사용자 인터페이스 "비활성화" 상태;에 단추를 변경 하려면 그 코드를 통해 수행 해야 합니다.
사용자 지정 Api는 특정된 도구 모음 단추의 상태를 변경할 수 있습니다을 허용 한다, 가급적 도구 모음 단추를 나타내는 명령에 대해 ON_UPDATE_COMMAND_UI 처리기에서 이러한 상태를 변경 해야 합니다. 기억 하 고, Setbuttonstyle를 통해 이러한 상태를 변경한 다음 후 손실 된 얻을 수 있습니다 그래서 유휴 처리 ON_UPDATE_COMMAND_UI 처리기 사용 하 여 도구 모음 단추의 상태를 변경 됩니다 유휴。
도구 모음 단추 보냅니다 WM_COMMAND 메시지 일반 단추 또는 메뉴 항목 같은 일반적으로 ON_COMMAND 처리기 ON_UPDATE_COMMAND_UI 처리기를 제공 하는 클래스에 의해 처리。
거기에 4 개의 도구 모음 단추 스타일 (TBBS_ 값) 디스플레이 상태 사용:
6 공식 Windows 인터페이스 응용 프로그램 디자인 가이드 버튼 스타일 다음 TBBS 값으로 표현 됩니다.:
대화 상자 표시줄은 표준 Windows 컨트롤을 포함 하는 컨트롤 막대가입니다. 그 컨트롤을 포함 하 고 그들 사이 탭을 지 원하는 대화 상자 처럼 작동 합니다. 그것은 또한 역할 대화 상자와 같은 대화 서식 파일을 사용 하 여 막대를 대표 하는。
CDialogBar 표준 푸시버튼 제어를 포함 하 고 인쇄 미리 보기 도구 모음에 대 한 사용。
CFormView를 사용 하 여 비슷합니다 CDialogBar 를 사용 하 여. 대화 상자 표시줄에 대 한 대화 상자 템플릿을 정의 하 고 WS_CHILD제외 하 고 스타일을 모두 제거 해야 합니다. 참고 대화 상자 표시 하지 않아야。
CDialogBar 에 대 한 컨트롤 알림 (처럼, 도구 모음 단추) 컨트롤 막대의 부모에 전송 됩니다.
CCmdUI 지원 Cdialogbar에 대 한
대화 상자 표시줄 단추 ON_UPDATE_COMMAND_UI 처리기 메커니즘을 통해 업데이트 해야 합니다. 유휴 시간에서 대화 상자 표시줄 ID gt;에 있는 모든 단추의 명령 id ON_UPDATE_COMMAND_UI 처리기 호출 0x8000 = (즉, 명령 Id의 범위에서)(&G)。
ON_UPDATE_COMMAND_UI 처리기를 호출할 수 있습니다.:
사용자 지정 표준 창 관리자 Api 통해 할 수 있습니다.
기술 노트 번호로 |nbsp; 카테고리별 기술 노트(&N)