사용자 정의 항목 유형을 스냅인 개체에 추가 하는 방법?

기본적으로 ATL 개체 마법사에서 스냅인 개체에 대 한 CSnapInItemImpl에서 파생 된 단일 데이터 클래스를 만듭니다.

일부의 경우 스냅인 개체에 대 한 사용자 정의 항목 유형을 하나 이상 구현 해야 합니다. 가장 간단한 방법은 복사 하 고 수정 기존 데이터 클래스에서 새 클래스를 프로젝트에 몇 가지 추가 변경 하는 것입니다. 이 절차를 3 단계에서 이루어집니다.:

사용자 정의 항목 데이터 클래스 만들기

첫 번째 단계에서는 스냅인 개체에 대 한 기존 데이터 클래스 선언의 복사 하 고 별도 클래스를 만드는 결과 수정。

데이터 클래스 선언은 PROJNAME의 시작 부분에서 찾을 수 있습니다.스냅인 프로젝트의 파일을 H입니다. 이 클래스 선언을 찾아 복사 하 고 첫 번째 선언은 아래 결과 붙여 넣습니다。

새로 붙여넣은 선언에서 첫 번째 클래스 이름의 모든 항목을 새 두 번째 클래스의 이름을 바꿉니다. 예를 들어, 프로젝트 데이터 클래스를 호출 하는 경우 CMySnapInData 라는 사용자 지정 데이터 항목 클래스를 작성 하려면 CMyCustomSnapInData , 먼저 복사 및 초기 데이터 클래스의 선언을 붙여 넣습니다. 다음의 모든 항목에 대 한 검색 CMySnapInData (에서 붙여넣은 섹션)와 그것을 대체 하는 고CMyCustomSnapInData。

사용자 지정 데이터 클래스에 대 한 Guid를 구현

클래스 선언 외에 데이터 클래스에는 GUID 선언 및 4 명의 정적 데이터 멤버를 검색 합니다. GUID 및 데이터 멤버는 PROJNAME끝에 정의 됩니다.CPP 파일입니다. 다음은 예제 선언입니다.:

정적 const GUID CProjNameGUID_NODETYPE = {0xb386c6b, 0x8633, 0x11d1, {0xb0, 0x8, 0x0, 0xc0, 0x4f, 0xb9, 0x94, 0x36}};
const GUID * nbsp; CProjNameData::m_NODETYPE = & CsdfdsfGUID_NODETYPE;
const TCHAR * CProjNameData::m_SZNODETYPE = _T("0B386C6B-8633-11D1-B008-00C04FB99436");
const TCHAR * CProjNameData::m_SZDISPLAY_NAME = _T("Csdfdsf");
const CLSID * CProjNameData::m_SNAPIN_CLASSID = & CLSID_sdfdsf

이러한 데이터 멤버는 GUID에 의존 하기 때문에 먼저 새 GUID (GUIDGEN을 사용 하 여)를 생성 한 다음 복사 하 여 붙여 초기 데이터 클래스의 다섯 개의 선언 바로 아래 해야 합니다. 복사본을 만든 후에 새로 생성된 된 GUID를 사용 하 여 수정. 예를 들어, 앞의 코드 예제를 사용 하 여 새 GUID를 생성, 두 번째 데이터 클래스에 대 한 결과 것 같습니다.:

정적 const GUID CMyCustomSnapInGUID_NODETYPE nbsp; =? {0x8dbeb252, 0x9201, 0x11d1, {0xa8, 0xd6, 0x0, 0x60, 0x8, 0x93,
 ?????? 0x8f, 0xb8}};
const GUID * CMyCustomSnapIn::m_NODETYPE = & CMySnapInGUID_NODETYPE;
const TCHAR * CMyCustomSnapIn::m_SZNODETYPE =
 ?? _T("8DBEB252-9201-11D1-A8D6-006008938FB8");
const TCHAR * CMyCustomSnapIn::m_SZDISPLAY_NAME = _T("CMyCustomSnapIn");
const CLSID * CMyCustomSnapIn::m_SNAPIN_CLASSID = & CLSID_MyCustomSnapIn

이러한 수정 완료 후에 한 단계 왼쪽: 스냅인 개체에 대 한 레지스트리 파일 수정。

수정 합니다.스냅인 프로젝트의 RGS 파일

목적은 합니다.RGS 파일에서 스냅인 개체 및 모든 구성 요소를 등록 하는 것. 수정 해야 하는 때문에 사용자 지정 데이터 항목 클래스를 추가 합니다.RGS 파일에이 클래스를 또한 등록을。

메모nbsp;??이 단계에서는 이전 단계에서 생성 된 GUID는 사용(&N)。

다음 두 가지 영역에서 합니다.RGS 파일을 수정 해야 합니다. 둘 다에 대 한 검색 하 여 신속 하 게 찾을 수 있는 NodeTypes 키워드。

첫 번째 항목은 아래는 NoRemove Snapins 섹션. 중첩에 NodeTypes 섹션, 기존으로 동일한 GUID format을 사용 하 여 기존 한 후 즉시 새 GUID를 추가。

두 번째 항목에는 NoRemove NodeTypes 섹션. 코드를이 섹션에서 발견, 즉시 후에 그것을 붙여 및 사용자 지정 클래스 GUID 참조 GUID 변경 복사。

스냅인 프로젝트를 수정 완료 됩니다. 성공적인 컴파일 후 새로운 사용자 정의 항목 유형을 해야한다합니다。

Index