다음을 통해 공유


CSnapInItemImpl 클래스

이 클래스는 스냅인 노드 개체를 구현하기 위한 메서드를 제공합니다.

Important

이 클래스와 해당 멤버는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다.

구문

template <class T, BOOL bIsExtension = FALSE>
class ATL_NO_VTABLE CSnapInItemImpl : public CSnapInItem

매개 변수

T
에서 파생된 CSnapInItemImpl클래스입니다.

bIsExtension
개체가 스냅인 확장인 경우 TRUE입니다. 그렇지 않으면 FALSE입니다.

멤버

공용 생성자

속성 설명
CSnapInItemImpl::CSnapInItemImpl 생성자입니다.

공용 메서드

이름 설명
CSnapInItemImpl::AddMenuItems 상황에 맞는 메뉴에 메뉴 항목을 추가합니다.
CSnapInItemImpl::Command 사용자 지정 메뉴 항목을 선택할 때 콘솔에서 호출됩니다.
CSnapInItemImpl::CreatePropertyPages 스냅인의 속성 시트에 페이지를 추가합니다.
CSnapInItemImpl::FillData 스냅인 개체의 정보를 지정된 스트림에 복사합니다.
CSnapInItemImpl::GetResultPaneInfo 스냅인의 RESULTDATAITEM 구조를 검색합니다.
CSnapInItemImpl::GetResultViewType 결과 창에서 사용하는 뷰 유형을 결정합니다.
CSnapInItemImpl::GetScopePaneInfo 스냅인의 SCOPEDATAITEM 구조를 검색합니다.
CSnapInItemImpl::Notify 사용자가 수행한 작업의 스냅인을 알리기 위해 콘솔에서 호출됩니다.
CSnapInItemImpl::QueryPagesFor 스냅인 노드가 속성 페이지를 지원하는지 확인하기 위해 호출됩니다.
CSnapInItemImpl::SetMenuInsertionFlags 스냅인 개체의 메뉴 삽입 플래그를 수정합니다.
CSnapInItemImpl::SetToolbarButtonInfo 지정된 도구 모음 단추의 정보를 설정합니다.
CSnapInItemImpl::UpdateMenuState 상황에 맞는 메뉴 항목의 상태를 업데이트합니다.
CSnapInItemImpl::UpdateToolbarButton 지정된 도구 모음 단추의 상태를 업데이트합니다.

공용 데이터 멤버

속성 설명
CSnapInItemImpl::m_bstrDisplayName 스냅인 개체의 이름입니다.
CSnapInItemImpl::m_resultDataItem 개체에서 사용하는 Windows RESULTDATAITEM 구조체입니다 CSnapInItemImpl .
CSnapInItemImpl::m_scopeDataItem 개체에서 사용하는 Windows SCOPEDATAITEM 구조체입니다 CSnapInItemImpl .

설명

CSnapInItemImpl 에서는 메뉴 항목 및 도구 모음을 추가하고 스냅인 노드에 대한 명령을 적절한 처리기 함수로 전달하는 것과 같은 스냅인 노드 개체에 대한 기본 구현을 제공합니다. 이러한 기능은 여러 인터페이스 및 맵 형식을 사용하여 구현됩니다. 기본 구현은 파생 클래스의 올바른 인스턴스를 확인하고 메시지를 올바른 인스턴스로 전달하여 노드 개체로 전송되는 알림을 처리합니다.

상속 계층 구조

CSnapInItem

CSnapInItemImpl

요구 사항

헤더: atlsnap.h

CSnapInItemImpl::AddMenuItems

이 메서드는 Win32 함수 IExtendContextMenu::AddMenuItems를 구현합니다.

AddMenuItems(
    LPCONTEXTMENUCALLBACK piCallback,
    long* pInsertionAllowed,
    DATA_OBJECT_TYPES type);

매개 변수

piCallback
[in] 상황에 맞는 메뉴에 IContextMenuCallback 항목을 추가할 수 있는 포인터입니다.

pInsertionAllowed
[in, out] 사용할 수 있는 MMC(Microsoft Management Console)에서 정의한 메뉴 항목 삽입 지점을 식별합니다. 다음 플래그의 조합일 수 있습니다.

  • CCM_INSERTIONALLOWED_TOP 항목은 상황에 맞는 메뉴의 맨 위에 삽입할 수 있습니다.

  • CCM_INSERTIONALLOWED_NEW 항목은 새로 만들기 하위 메뉴에 삽입할 수 있습니다.

  • CCM_INSERTIONALLOWED_TASK 항목은 작업 하위 메뉴에 삽입할 수 있습니다.

  • CCM_INSERTIONALLOWED_VIEW 항목은 도구 모음 보기 메뉴 또는 결과 창 상황에 맞는 메뉴의 보기 하위 메뉴에 삽입할 수 있습니다.

type
[in] 개체의 형식을 지정합니다. 다음 값 중 하나를 가질 수 있습니다.

  • 범위 창 컨텍스트에 대한 데이터 개체를 CCT_SCOPE.

  • 결과 창 컨텍스트에 대한 데이터 개체를 CCT_RESULT.

  • 스냅인 관리자 컨텍스트에 대한 데이터 개체를 CCT_SNAPIN_MANAGER.

  • CCT_UNINITIALIZED Data 개체의 형식이 잘못되었습니다.

CSnapInItemImpl::Command

이 메서드는 Win32 함수 IExtendContextMenu::Command를 구현합니다.

Command(long lCommandID, DATA_OBJECT_TYPES type);

매개 변수

lCommandID
[in] 메뉴 항목의 명령 식별자를 지정합니다.

type
[in] 개체의 형식을 지정합니다. 다음 값 중 하나를 가질 수 있습니다.

  • 범위 창 컨텍스트에 대한 데이터 개체를 CCT_SCOPE.

  • 결과 창 컨텍스트에 대한 데이터 개체를 CCT_RESULT.

  • 스냅인 관리자 컨텍스트에 대한 데이터 개체를 CCT_SNAPIN_MANAGER.

  • CCT_UNINITIALIZED Data 개체의 형식이 잘못되었습니다.

CSnapInItemImpl::CreatePropertyPages

이 메서드는 Win32 함수 IExtendPropertySheet::CreatePropertyPages를 구현합니다.

CreatePropertyPages(
    LPPROPERTYSHEETCALLBACK lpProvider,
    long handle,
    IUnknown* pUnk,
    DATA_OBJECT_TYPES type);

매개 변수

lpProvider
[in] 인터페이스에 대한 포인터입니다 IPropertySheetCallback .

handle
[in] MMCN_PROPERTY_CHANGE 알림 메시지를 적절한 데이터 클래스로 라우팅하는 데 사용되는 핸들을 지정합니다.

pUnk
[in] 노드에 IExtendPropertySheet 대한 컨텍스트 정보를 포함하는 개체의 인터페이스에 대한 포인터입니다.

type
[in] 개체의 형식을 지정합니다. 다음 값 중 하나를 가질 수 있습니다.

  • 범위 창 컨텍스트에 대한 데이터 개체를 CCT_SCOPE.

  • 결과 창 컨텍스트에 대한 데이터 개체를 CCT_RESULT.

  • 스냅인 관리자 컨텍스트에 대한 데이터 개체를 CCT_SNAPIN_MANAGER.

  • CCT_UNINITIALIZED Data 개체의 형식이 잘못되었습니다.

CSnapInItemImpl::CSnapInItemImpl

CSnapInItemImpl 개체를 생성합니다.

CSnapInItemImpl();

CSnapInItemImpl::FillData

이 함수는 항목에 대한 정보를 검색하기 위해 호출됩니다.

FillData(CLIPFORMAT cf, LPSTREAM pStream);

매개 변수

cf
[in] 클립보드의 서식(텍스트, 서식 있는 텍스트 또는 OLE 항목이 있는 서식 있는 텍스트)

pStream
[in] 개체 데이터를 포함하는 스트림에 대한 포인터입니다.

설명

이 함수를 올바르게 구현하려면 cf로 표시된 클립보드 형식에 따라 올바른 정보를 스트림(pStream)에 복사합니다.

CSnapInItemImpl::GetResultViewType

스냅인 개체의 결과 창에 대한 뷰 유형을 검색하려면 이 함수를 호출합니다.

GetResultViewType(
    LPOLESTR* ppViewType,
    long* pViewOptions);

매개 변수

ppViewType
[out] 반환된 뷰 형식의 주소에 대한 포인터입니다.

pViewOptions
[out] 소유 스냅인에서 지정한 옵션을 콘솔에 제공하는 MMC_VIEW_OPTIONS 열거형에 대한 포인터입니다. 이 값은 다음 중 하나일 수 있습니다.

  • MMC_VIEW_OPTIONS_NOLISTVIEWS = 0x00000001 보기 메뉴에서 표준 목록 보기 선택을 표시하지 않도록 콘솔에 지시합니다. 스냅인에서 결과 보기 창에만 고유한 사용자 지정 보기를 표시할 수 있습니다. 현재 정의된 유일한 옵션 플래그입니다.

  • MMC_VIEW_OPTIONS_NONE = 0 기본 보기 옵션을 허용합니다.

CSnapInItemImpl::GetScopePaneInfo

이 함수를 호출하여 스냅인의 구조를 검색 SCOPEDATAITEM 합니다.

GetScopePaneInfo (SCOPEDATAITEM* pScopeDataItem);

매개 변수

pScopeDataItem
[out] 개체의 구조에 SCOPEDATAITEM 대한 포인터입니다 CSnapInItemImpl .

CSnapInItemImpl::GetResultPaneInfo

이 함수를 호출하여 스냅인의 구조를 검색 RESULTDATAITEM 합니다.

GetResultPaneInfo (RESULTDATAITEM* pResultDataItem);

매개 변수

pResultDataItem
[out] 개체의 구조에 RESULTDATAITEM 대한 포인터입니다 CSnapInItemImpl .

CSnapInItemImpl::m_bstrDisplayName

노드 항목에 대해 표시되는 문자열을 포함합니다.

CComBSTR m_bstrDisplayName;

CSnapInItemImpl::m_scopeDataItem

SCOPEDATAITEM 스냅인 데이터 개체의 구조입니다.

SCOPEDATAITEM m_scopeDataItem;

CSnapInItemImpl::m_resultDataItem

스냅인 데이터 개체의 RESULTDATAITEM 구조체입니다.

RESULTDATAITEM m_resultDataItem;

CSnapInItemImpl::Notify

사용자가 스냅인 개체를 수행할 때 호출됩니다.

STDMETHOD(Notify)(
    MMC_NOTIFY_TYPE event,
    long arg,
    long param,
    IComponentData* pComponentData,
    IComponent* pComponent,
    DATA_OBJECT_TYPES type) = 0;

매개 변수

event
[in] 사용자가 수행한 작업을 식별합니다. 다음과 같은 알림이 가능합니다.

  • MMCN_ACTIVATE 창이 활성화되고 비활성화될 때 전송됩니다.

  • MMCN_ADD_IMAGES 결과 창에 이미지를 추가하려면 전송됩니다.

  • MMCN_BTN_CLICK 사용자가 도구 모음 단추 중 하나를 클릭하면 전송됩니다.

  • MMCN_CLICK 사용자가 목록 보기 항목에서 마우스 단추를 클릭할 때 전송됩니다.

  • MMCN_DBLCLICK 사용자가 목록 보기 항목에서 마우스 단추를 두 번 클릭하면 전송됩니다.

  • MMCN_DELETE 개체를 삭제해야 임을 스냅인에 알리기 위해 전송됩니다.

  • MMCN_EXPAND 폴더를 확장하거나 계약해야 하는 경우 전송됩니다.

  • MMCN_MINIMIZED 창을 최소화하거나 최대화할 때 전송됩니다.

  • MMCN_PROPERTY_CHANGE 스냅인 개체의 보기가 변경되도록 스냅인 개체에 알리기 위해 전송됩니다.

  • MMCN_REMOVE_CHILDREN 스냅인에서 지정된 노드 아래에 추가한 전체 하위 트리를 삭제해야 하는 경우 전송됩니다.

  • MMCN_RENAME 이름을 처음으로 쿼리하고 이름을 바꾸는 데 두 번째로 보냈습니다.

  • MMCN_SELECT 범위 또는 결과 보기 창의 항목을 선택하면 전송됩니다.

  • MMCN_SHOW 범위 항목을 처음으로 선택하거나 선택 취소할 때 전송됩니다.

  • MMCN_VIEW_CHANGE 변경이 발생할 때 스냅인에서 모든 보기를 업데이트할 수 있는 경우 전송됩니다.

arg
[in] 알림 유형에 따라 다릅니다.

param
[in] 알림 유형에 따라 다릅니다.

pComponentData
[out] 를 구현하는 개체에 대한 포인터입니다 IComponentData. 알림이 .에서 IComponentData::Notify전달되지 않는 경우 이 매개 변수는 NULL입니다.

pComponent
[out] 를 구현하는 개체에 대한 포인터입니다 IComponent. 알림이 .에서 IComponent::Notify전달되지 않는 경우 이 매개 변수는 NULL입니다.

type
[in] 개체의 형식을 지정합니다. 다음 값 중 하나를 가질 수 있습니다.

  • 범위 창 컨텍스트에 대한 데이터 개체를 CCT_SCOPE.

  • 결과 창 컨텍스트에 대한 데이터 개체를 CCT_RESULT.

  • 스냅인 관리자 컨텍스트에 대한 데이터 개체를 CCT_SNAPIN_MANAGER.

  • CCT_UNINITIALIZED Data 개체의 형식이 잘못되었습니다.

CSnapInItemImpl::QueryPagesFor

스냅인 노드가 속성 페이지를 지원하는지 확인하기 위해 호출됩니다.

QueryPagesFor(DATA_OBJECT_TYPES type);

CSnapInItemImpl::SetMenuInsertionFlags

이 함수를 호출하여 스냅인 개체에 대해 pInsertionAllowed지정된 메뉴 삽입 플래그를 수정합니다.

void SetMenuInsertionFlags(
    bool bBeforeInsertion,
    long* pInsertionAllowed);

매개 변수

bBeforeInsertion
[in] 항목을 상황에 맞는 메뉴에 추가하기 전에 함수를 호출해야 하는 경우 0이 아닌 경우 그렇지 않으면 0입니다.

pInsertionAllowed
[in, out] 사용할 수 있는 MMC(Microsoft Management Console)에서 정의한 메뉴 항목 삽입 지점을 식별합니다. 다음 플래그의 조합일 수 있습니다.

  • CCM_INSERTIONALLOWED_TOP 항목은 상황에 맞는 메뉴의 맨 위에 삽입할 수 있습니다.

  • CCM_INSERTIONALLOWED_NEW 항목은 새로 만들기 하위 메뉴에 삽입할 수 있습니다.

  • CCM_INSERTIONALLOWED_TASK 항목은 작업 하위 메뉴에 삽입할 수 있습니다.

  • CCM_INSERTIONALLOWED_VIEW 항목은 도구 모음 보기 메뉴 또는 결과 창 상황에 맞는 메뉴의 보기 하위 메뉴에 삽입할 수 있습니다.

설명

기본 스냅인을 개발하는 경우 타사 확장에서 추가할 수 있는 메뉴 항목의 종류를 제한하는 방법으로 삽입 플래그를 다시 설정할 수 있습니다. 예를 들어 기본 스냅인은 CCM_INSERTIONALLOWED_NEW 플래그를 지워 확장에서 새 만들기 메뉴 항목을 추가하지 못하도록 할 수 있습니다.

원래 지워진 pInsertionAllowed에서 비트를 설정하려고 하면 안 됩니다. 이후 버전의 MMC는 현재 정의되지 않은 비트를 사용할 수 있으므로 현재 정의되지 않은 비트를 변경해서는 안 됩니다.

CSnapInItemImpl::SetToolbarButtonInfo

이 함수를 호출하여 도구 모음을 만들기 전에 스냅인 개체의 도구 모음 단추 스타일을 수정합니다.

void SetToolbarButtonInfo(
    UINT id,
    BYTE* fsState,
    BYTE* fsType);

매개 변수

id
[in] 설정할 도구 모음 단추의 ID입니다.

fsState
[in] 단추의 상태 플래그입니다. 다음 중 하나 이상이 될 수 있습니다.

  • TBSTATE_CHECKED 단추에는 TBSTYLE_CHECKED 스타일이 있으며 누르고 있습니다.

  • TBSTATE_ENABLED 단추는 사용자 입력을 허용합니다. 이 상태가 아닌 단추는 사용자 입력을 허용하지 않으며 회색으로 표시됩니다.

  • TBSTATE_HIDDEN 단추가 표시되지 않고 사용자 입력을 받을 수 없습니다.

  • TBSTATE_INDETERMINATE 단추가 회색으로 표시됩니다.

  • TBSTATE_PRESSED 단추를 누르고 있습니다.

  • TBSTATE_WRAP 줄 바꿈이 단추를 따릅니다. 단추에는 TBSTATE_ENABLED 있어야 합니다.

fsType
[in] 단추의 상태 플래그입니다. 다음 중 하나 이상이 될 수 있습니다.

  • TBSTYLE_BUTTON 표준 푸시 단추를 만듭니다.

  • TBSTYLE_CHECK 사용자가 클릭할 때마다 누른 상태와 누르지 않은 상태 간에 전환되는 단추를 만듭니다. 단추가 눌린 상태일 때 단추의 배경색이 다릅니다.

  • TBSTYLE_CHECKGROUP 그룹의 다른 단추를 누를 때까지 누른 상태로 유지되는 확인 단추를 만듭니다.

  • TBSTYLE_GROUP 그룹의 다른 단추를 누를 때까지 누른 상태로 유지되는 단추를 만듭니다.

  • TBSTYLE_SEP 단추 그룹 간에 작은 간격을 제공하는 구분 기호를 만듭니다. 이 스타일이 있는 단추는 사용자 입력을 받지 않습니다.

CSnapInItemImpl::UpdateMenuState

스냅인 개체의 상황에 맞는 메뉴에 삽입되기 전에 메뉴 항목을 수정하려면 이 함수를 호출합니다.

void UpdateMenuState(
    UINT id,
    LPTSTR pBuf,
    UINT* flags);

매개 변수

id
[in] 설정할 메뉴 항목의 ID입니다.

pBuf
[in] 업데이트할 메뉴 항목의 문자열에 대한 포인터입니다.

flags
[in] 새 상태 플래그를 지정합니다. 다음 플래그의 조합일 수 있습니다.

  • MF_POPUP 상황에 맞는 메뉴 내의 하위 메뉴임을 지정합니다. 메뉴 항목, 삽입 지점 및 추가 하위 메뉴를 해당 항목으로 IInsertionPointID사용하여 이 하위 메뉴에 lCommandID 추가할 수 있습니다.

  • MF_BITMAP 및 MF_OWNERDRAW 이러한 플래그는 허용되지 않으며 반환 값이 E_INVALIDARG.

  • MF_SEPARATOR 가로 구분선을 그립니다. MF_SEPARATOR 설정된 메뉴 항목만 IContextMenuProvider 추가할 수 있습니다.

  • MF_CHECKED 메뉴 항목 옆에 확인 표시를 배치합니다.

  • MF_DISABLED 선택할 수 없도록 메뉴 항목을 사용하지 않도록 설정하지만 플래그는 회색으로 표시되지 않습니다.

  • MF_ENABLED 메뉴 항목을 선택할 수 있도록 설정하여 회색 상태에서 복원합니다.

  • MF_GRAYED 메뉴 항목을 사용하지 않도록 설정하고 선택할 수 없도록 회색으로 표시합니다.

  • MF_MENUBARBREAK 메뉴 모음의 MF_MENUBREAK 플래그와 동일한 함수입니다. 드롭다운 메뉴, 하위 메뉴 또는 바로 가기 메뉴의 경우 새 열은 이전 열과 세로줄로 구분됩니다.

  • MF_MENUBREAK 열을 구분하지 않고 새 줄(메뉴 모음의 경우) 또는 새 열(드롭다운 메뉴, 하위 메뉴 또는 바로 가기 메뉴의 경우)에 항목을 배치합니다.

  • MF_UNCHECKED 항목 옆에 확인 표시를 배치하지 않습니다(기본값).

다음 플래그 그룹을 함께 사용할 수 없습니다.

  • MF_DISABLED, MF_ENABLED 및 MF_GRAYED.

  • MF_MENUBARBREAK 및 MF_MENUBREAK.

  • MF_CHECKED 및 MF_UNCHECKED.

CSnapInItemImpl::UpdateToolbarButton

스냅인 개체가 표시되기 전에 도구 모음 단추를 수정하려면 이 함수를 호출합니다.

BOOL UpdateToolbarButton(UINT id, BYTE fsState);

매개 변수

id
업데이트할 도구 모음 단추의 단추 ID를 지정합니다.

fsState
도구 모음 단추 상태를 지정합니다. 이 상태를 설정하려면 TRUE를 반환합니다. 다음 플래그의 조합일 수 있습니다.

  • ENABLED 단추는 사용자 입력을 허용합니다. 이 상태가 아닌 단추는 사용자 입력을 허용하지 않으며 회색으로 표시됩니다.

  • 선택 단추에 CHECKED 스타일이 있으며 누르고 있습니다.

  • HIDDEN 단추가 표시되지 않으며 사용자 입력을 받을 수 없습니다.

  • INDETERMINATE 단추가 회색으로 표시됩니다.

  • BUTTONPRESSED 단추를 누르고 있습니다.

참고 항목

클래스 개요