Domyślnie kreator obiektu ATL tworzy klasę danych, pochodzące z CSnapInItemImpl, dla obiektu przystawki.
W niektórych przypadkach trzeba zaimplementować jeden lub więcej typów elementów niestandardowych dla obiektu przystawki. Najprostsze podejście jest skopiować i zmodyfikować nową klasę z istniejącej klasy danych oraz wprowadzenie niektórych dodatkowych zmian do projektu. Ta procedura jest realizowany w trzech krokach:
Pierwszym krokiem jest kopiowanie deklaracji istniejącej klasy danych dla obiektu przystawki i następnie modyfikując wyników w celu utworzenia osobnej klasy.
Deklaracji klasy danych można znaleźć na początku PROJNAME.H plik projektu przystawki. Znajdź deklarację klasy i skopiuj i Wklej wynik poniżej pierwszej deklaracji.
W nowo wklejanej zgłoszenia należy zastąpić wszystkie wystąpienia nazwę pierwszej klasy nazwę nowego drugiej klasy. Na przykład jeśli klasy danych projektu jest nazywany CMySnapInData
i chcesz utworzyć niestandardowe dane klasy element o nazwie CMyCustomSnapInData
, najpierw skopiować i wkleić deklaracji klasy początkowych danych. Następnie wyszukać wszystkie wystąpienia CMySnapInData
(w sekcji wklejony) i zastąpienie go zCMyCustomSnapInData
.
Oprócz deklaracji klasy klasa danych ma deklarację identyfikatora GUID i czterech członków dane statyczne. Członkowie GUID i dane są definiowane na końcu PROJNAME.CPP pliku. Oto przykład deklaracja:
statyczne stała GUID CProjNameGUID_NODETYPE = {0xb386c6b, 0x8633, 0x11d1, {0xb0, 0x8, 0x0, 0xc0, 0x4f, 0xb9, 0x94, 0x36}};
stała 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");
stała CLSID * CProjNameData::m_SNAPIN_CLASSID = & CLSID_sdfdsf
Ponieważ członkowie ci danych zależą od identyfikatora GUID, musisz najpierw wygenerować nowy identyfikator GUID (za pomocą GUIDGEN) a następnie skopiować i wkleić deklaracje pięć klas początkowych danych bezpośrednio poniżej. Po utworzeniu kopii, zmodyfikować go do używania nowo utworzony identyfikator GUID. Na przykład przy użyciu poprzedni przykładowy kod i generowania nowego identyfikatora GUID, wyniki dla drugiej klasy danych mogłoby się następująco:
statyczne stała GUID CMyCustomSnapInGUID_NODETYPE = nbsp; {0x8dbeb252, 0x9201, 0x11d1, {0xa8, 0xd6, 0x0, 0x60, 0x8, 0x93,
0x8f, 0xb8}};
stała 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");
stała CLSID * CMyCustomSnapIn::m_SNAPIN_CLASSID = & CLSID_MyCustomSnapIn
Po zakończeniu tych zmian istnieje jeden krok od lewej: modyfikowanie pliku rejestru dla obiektu przystawki.
Celem.RGS pliku ma zarejestrować obiektów przystawek i wszystkie jego składniki. Ponieważ dodano klasę element niestandardowe dane, trzeba zmodyfikować.Plik RGS do rejestracji tej klasy zbyt.
Uwaga Identyfikator GUID, który zostanie wygenerowany w poprzednim kroku jest używana w tym kroku.
Istnieją dwa obszary.Plik RGS, który należy zmodyfikować. Zarówno można szybko znaleźć wyszukując NodeTypes
słowa kluczowego.
Pierwsze wystąpienie jest pod NoRemove Snapins
sekcji. W zagnieżdżonym NodeTypes
sekcji, dodawanie nowego identyfikatora GUID natychmiast po istniejącego, przy użyciu tego samego formatu identyfikatora GUID w istniejącym.
Drugie wystąpienie jest w NoRemove NodeTypes
sekcji. Kopiuj kod znalezione w tej sekcji, wkleić go natychmiast po i zmienić odwołanie identyfikatora GUID GUID klasy niestandardowej.
Zakończeniu modyfikacji projektu przystawki. Po pomyślnym kompilacji trzeba będzie nowy typ niestandardowy element.