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 단추를 누르고 있습니다.