상황에 맞는 탭 표시
Windows 리본 프레임워크 애플리케이션에서 상황별 탭은 이미지와 같은 애플리케이션 작업 영역의 개체를 선택하거나 강조 표시할 때 탭 행에 표시되는 숨겨진 Tab 컨트롤입니다.
소개
작업 영역 컨텍스트에 관계없이 관련된 다양한 공통 명령이 포함된 핵심 탭과 달리 컨텍스트 탭에는 일반적으로 선택되거나 강조 표시된 개체에만 적용할 수 있는 하나 이상의 명령이 포함됩니다.
애플리케이션 작업 영역에서 개체를 선택하거나 강조 표시할 때 개체의 형식과 컨텍스트에는 하나의 컨텍스트 탭에서 조직 또는 기능적 의미를 부여하지 않는 서로 다른 명령이 필요할 수 있습니다. 이러한 경우 탭 그룹에 포함된 여러 컨텍스트 탭이 필요할 수 있습니다. 예를 들어 테이블 셀에 포함된 이미지를 선택하려면 테이블 및 이미지 기능을 모두 노출하는 두 개의 상황별 탭이 필요할 수 있습니다.
참고
리본 프레임워크는 여러 상황별 탭 외에도 리본 메뉴 내에서 여러 탭 그룹 컨트롤을 지원합니다.
상황에 맞는 탭을 표시할 때 리본 프레임워크는 다음을 포함하는 기본 동작 집합을 적용합니다.
- 상황별 탭은 선언된 순서대로 배치되고 리본 탭 행의 핵심 탭 오른쪽에 배치됩니다.
- 리본의 크기를 조정하면 탭의 크기가 조정되고 공간 요구 사항에 따라 탭 레이블이 잘립니다. 그러나 표시되는 상황별 탭에는 마지막으로 크기가 조정되고 잘리는 더 높은 표시 우선 순위가 지정됩니다.
- 탭 그룹의 레이블은 애플리케이션 제목 표시줄에 표시되며 연결된 모든 컨텍스트 탭에 걸쳐 있습니다.
- 여러 탭 그룹 컨트롤이 동시에 표시되면 애플리케이션 제목 표시줄에 있는 각 탭 그룹의 배경에 5가지 고유한 색 중 하나가 할당됩니다. 이 색은 탭 그룹의 상황에 맞는 탭에 대한 강조 색으로도 사용됩니다.
- 탭 그룹 색 할당은 탭 그룹 요소가 태그에 선언된 순서를 기반으로 합니다. 색은 프레임워크에 의해 정의되며 애플리케이션에서 지정할 수 없습니다.
- 프레임워크에서 정의한 탭 그룹 색은 프레임워크 속성 키를 통해 간접적으로 수정할 수 있습니다. 자세한 내용은 리본 색 사용자 지정을 참조하세요.
- 한 번에 5개 이상의 탭 그룹 컨트롤이 표시되면 프레임워크는 연결된 색을 순환합니다.
- 리본 메뉴의 최대 Tab 컨트롤 수는 100개로 제한됩니다. 여기에는 표시 여부와 관계없이 상황에 맞는 탭이 포함됩니다.
다음 스크린샷은 Windows 7 그림판의 상황별 탭을 보여줍니다.
상황에 맞는 탭 구현
이 섹션에서는 리본 메뉴 상황에 맞는 탭의 구현 세부 정보를 설명하고 리본 애플리케이션에 통합하는 방법을 안내합니다.
태그
다음 예제에서는 두 개의 상황별 탭이 포함된 TabGroup 요소에 대한 기본 태그를 보여 줍니다.
이 코드 섹션에서는 TabGroup 및 Tab 명령 선언을 보여 줍니다.
<!-- Contextual Tabs -->
<Command Name='cmdContextualTab1'
LabelTitle='Contextual Tab 1'
Symbol='ID_CONTEXTUALTAB1'/>
<Command Name='cmdContextualTab2'
LabelTitle='Contextual Tab 2'
Symbol='ID_CONTEXTUALTAB2'/>
<Command Name='cmdContextualTabGroup'
LabelTitle='Contextual Tabs'
Symbol='ID_CONTEXTUALTAB_GROUP'/>
이 코드 섹션에서는 TabGroup 내에 두 개의 상황별 탭을 표시하는 데 필요한 컨트롤 선언을 보여 줍니다.
<Ribbon.ContextualTabs>
<TabGroup CommandName='cmdContextualTabGroup'>
<Tab CommandName='cmdContextualTab1'>
<!--InRibbonGallery Group-->
<Group CommandName='cmdInRibbonGalleryGroup'
SizeDefinition='OneInRibbonGallery'>
<InRibbonGallery CommandName='cmdTextSizeGallery3'
HasLargeItems='true'
ItemHeight='32'
ItemWidth='32'
MaxColumns='3' >
<InRibbonGallery.MenuLayout>
<FlowMenuLayout Columns='3'
Gripper ='Corner'/>
</InRibbonGallery.MenuLayout>
</InRibbonGallery>
</Group>
<!--Command Galleries Group-->
<Group CommandName='cmdCommandGalleriesGroup'
SizeDefinition='OneInRibbonGallery'>
<InRibbonGallery CommandName='cmdCommandGallery1'
Type='Commands'
MaxRows='3'
MaxColumns='3'>
<InRibbonGallery.MenuLayout>
<FlowMenuLayout Columns='3'
Gripper ='Corner'/>
</InRibbonGallery.MenuLayout>
</InRibbonGallery>
</Group>
</Tab>
<Tab CommandName='cmdContextualTab2'></Tab>
</TabGroup>
</Ribbon.ContextualTabs>
코드
UI_PKEY_ContextAvailable 컨텍스트 탭의 표시 여부와 상태를 지정하기 위해 프레임워크에서 정의한 단일 속성 키입니다. 애플리케이션 작업 영역에서 개체를 선택하면 컨텍스트 탭이 있는지 여부와 현재 탭으로 표시되는지 여부를 정의하는 UI_CONTEXTAVAILABILITY 열거형의 세 가지 값 중 하나를 이 속성에 할당할 수 있습니다.
애플리케이션은 작업 영역 컨텍스트가 변경되면 UI_PKEY_ContextAvailable 속성을 무효화하고 업데이트하여 Tab 그룹 업데이트를 요청합니다.
다음 코드 섹션에서는 애플리케이션 작업 영역에서 이미지를 선택할 때 상황에 맞는 탭을 표시하는 방법을 보여 줍니다.
// Initialize the image tools contextual tab visibility setting.
UI_CONTEXTAVAILABILITY g_ImageTools = UI_CONTEXTAVAILABILITY_NOTAVAILABLE;
// Called when an image is selected in the application.
void SelectImage()
{
...
g_ImageTools = UI_CONTEXTAVAILABILITY_ACTIVE;
// Invalidate the UI_PKEY_ContextAvailable property of the image tools
// contextual tab Command and trigger the UpdatePropery callback function.
pUIFramework->InvalidateUICommand(
cmdImageTabSet,
UI_INVALIDATIONS_PROPERTY,
UI_PKEY_ContextAvailable);
...
}
// Update Tab Group properties.
HRESULT MyTabGroupCommandHandler::UpdateProperty(
UINT nCmdID,
REFPROPERTYKEY key,
const PROPVARIANT* ppropvarCurrentValue,
PROPVARIANT* ppropvarNewValue)
{
HRESULT hr = E_FAIL;
if (key == UI_PKEY_ContextAvailable)
{
hr = UIInitPropertyFromUInt32(key, g_ImageTools, ppropvarNewValue);
}
...
return hr;
}
관련 항목