도구 모음 고정 및 고정 해제
Microsoft Foundation 클래스 라이브러리는 도킹 가능한 도구 모음을 지원합니다. 도킹 가능한 도구 모음은 부모 창의 어느 쪽에나 연결되거나 도킹되거나 자체 미니 프레임 창에서 분리되거나 부동될 수 있습니다. 이 문서에서는 애플리케이션에서 도킹 가능한 도구 모음을 사용하는 방법을 설명합니다.
애플리케이션 마법사를 사용하여 애플리케이션의 구조를 생성하는 경우 도킹 가능한 도구 모음을 사용할지 여부를 선택하라는 메시지가 표시됩니다. 기본적으로 애플리케이션 마법사는 애플리케이션에 도킹 가능한 도구 모음을 배치하는 데 필요한 세 가지 작업을 수행하는 코드를 생성합니다.
이러한 단계가 누락된 경우 애플리케이션에 표준 도구 모음이 표시됩니다. 애플리케이션의 각 도킹 가능한 도구 모음에 대해 마지막 두 단계를 수행해야 합니다.
이 문서에서 다루는 다른 항목은 다음과 같습니다.
예제는 MFC 일반 샘플 DOCKTOOL 을 참조하세요.
프레임 창에서 도킹 사용
도구 모음을 프레임 창에 도킹하려면 도킹을 허용하려면 프레임 창(또는 대상)을 사용하도록 설정해야 합니다. 이 작업은 프레임 창의 어느 쪽이 도킹을 허용하는지 나타내는 스타일 비트 집합인 하나의 DWORD 매개 변수를 사용하는 CFrameWnd::EnableDocking 함수를 사용하여 수행됩니다. 도구 모음이 도킹될 예정이고 도킹할 수 있는 여러 면이 있는 경우 전달된 EnableDocking
매개 변수에 표시된 측면은 위쪽, 아래쪽, 왼쪽, 오른쪽 순서로 사용됩니다. 컨트롤 막대를 어디서나 도킹하려면 CBRS_ALIGN_ANY 전달합니다EnableDocking
.
도구 모음에 도킹 사용
도킹 대상을 준비한 후에는 비슷한 방식으로 도구 모음(또는 원본)을 준비해야 합니다. 도킹하려는 각 도구 모음에 대해 CControlBar::EnableDocking을 호출하고 도구 모음이 도킹되어야 하는 대상 측면을 지정합니다. 프레임 창에서 도킹을 사용하도록 설정된 측면과 일치하도록 CControlBar::EnableDocking
호출에 지정된 측면이 없으면 도구 모음이 고정될 수 없습니다. 부동이 있으면 부동 도구 모음을 다시 기본 프레임 창에 도킹할 수 없습니다.
원하는 효과가 영구적으로 부동 도구 모음인 경우 매개 변수 0을 사용하여 호출 EnableDocking
합니다. 그런 다음, CFrameWnd::FloatControlBar를 호출 합니다. 도구 모음이 부동 기본 아무 곳이나 영구적으로 도킹할 수 없습니다.
도구 모음 도킹
프레임워크는 사용자가 도킹을 허용하는 프레임 창의 측면에 도구 모음을 놓으려고 할 때 CFrameWnd::D ockControlBar를 호출합니다.
또한 언제든지 이 함수를 호출하여 컨트롤 막대를 프레임 창에 도킹할 수 있습니다. 이 작업은 일반적으로 초기화 중에 수행됩니다. 둘 이상의 도구 모음을 프레임 창의 특정 측면에 도킹할 수 있습니다.
도구 모음 부동
프레임 창에서 도킹 가능한 도구 모음을 분리하는 것을 도구 모음을 부동이라고 합니다. CFrameWnd::FloatControlBar를 호출하여 이 작업을 수행합니다. 부동 도구 모음, 배치할 점 및 부동 도구 모음이 가로 또는 세로인지를 결정하는 맞춤 스타일을 지정합니다.
프레임워크는 사용자가 도킹된 위치에서 도구 모음을 끌어서 도킹이 사용하도록 설정되지 않은 위치에 삭제할 때 이 함수를 호출합니다. 프레임 창 내부 또는 외부에 있을 수 있습니다. 마찬가지로 DockControlBar
초기화 중에 이 함수를 호출할 수도 있습니다.
도킹 가능한 도구 모음의 MFC 구현은 도킹 가능한 도구 모음을 지원하는 일부 애플리케이션에서 찾은 확장 기능 중 일부를 제공하지 않습니다. 사용자 지정 가능한 도구 모음과 같은 기능은 제공되지 않습니다.
도구 모음의 동적 크기 조정
Visual C++ 버전 4.0을 기준으로 애플리케이션 사용자가 부동 도구 모음의 크기를 동적으로 조정할 수 있습니다. 일반적으로 도구 모음에는 가로로 표시되는 긴 선형 셰이프가 있습니다. 그러나 도구 모음의 방향과 모양을 변경할 수 있습니다. 예를 들어 사용자가 프레임 창의 세로 면 중 하나에 도구 모음을 도킹하면 셰이프가 세로 레이아웃으로 변경됩니다. 도구 모음을 여러 행의 단추가 있는 사각형으로 바꿀 수도 있습니다.
다음이 가능합니다.
동적 크기 조정을 도구 모음 특성으로 지정합니다.
고정 크기 조정을 도구 모음 특성으로 지정합니다.
이 지원을 제공하기 위해 CToolBar::Create 멤버 함수에 대한 호출에 사용할 두 가지 새로운 도구 모음 스타일이 있습니다. 아래에 이 계정과 키의 예제가 나와 있습니다.
CBRS_SIZE_DYNAMIC 컨트롤 막대가 동적입니다.
CBRS_SIZE_FIXED 컨트롤 표시줄이 고정되어 있습니다.
크기 동적 스타일을 사용하면 도구 모음이 부동하는 동안 도구 모음의 크기를 조정할 수 있지만 도킹되는 동안에는 크기를 조정할 수 없습니다. 사용자가 가장자리를 끌 때 셰이프를 변경해야 하는 경우 도구 모음이 "래핑"됩니다.
크기 고정 스타일은 도구 모음의 래핑 상태를 유지하여 각 열의 단추 위치를 고정합니다. 애플리케이션 사용자는 도구 모음의 모양을 변경할 수 없습니다. 도구 모음은 단추 사이의 구분 기호 위치와 같은 지정된 위치에서 래핑됩니다. 도구 모음이 도킹되었는지 부동인지에 관계없이 이 셰이프를 기본. 효과는 단추의 여러 열이 있는 고정 색상표입니다.
CToolBar::GetButtonStyle을 사용하여 도구 모음의 단추에 대한 상태 및 스타일을 반환할 수도 있습니다. 단추의 스타일은 단추가 표시되는 방식과 단추가 사용자 입력에 응답하는 방식을 결정합니다. 상태는 단추가 래핑된 상태인지 여부를 알려줍니다.
고정 스타일 도구 모음의 줄 바꿈 위치 설정
크기가 고정된 도구 모음의 경우 도구 모음이 래핑될 도구 모음 단추 인덱스를 지정합니다. 다음 코드는 기본 프레임 창의 재정의 OnCreate
에서 이 작업을 수행하는 방법을 보여 줍니다.
// Get the style of the first button separator
UINT nStyle = m_wndToolBar.GetButtonStyle(3);
// Augment the state for wrapping
nStyle |= TBBS_WRAPPED;
m_wndToolBar.SetButtonStyle(3, nStyle);
// Do the same for other wrap locations ...
// Set the bar style to size fixed
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);
// Call docking/floating functions as needed ...
MFC 일반 샘플 DOCKTOOL은 CControlBar 및 CToolBar 클래스의 멤버 함수를 사용하여 도구 모음의 동적 레이아웃을 관리하는 방법을 보여 줍니다. EDITBAR 파일을 참조하세요. DOCKTOOL의 CPP입니다.