Jak dodać niestandardowy element typów do obiektu przystawki?

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:

Tworzenie niestandardowego elementu danych klasy

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.

Wdrażanie identyfikatorów GUID klasy danych niestandardowych

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.

Modyfikowanie.RGS pliku projektu 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.

Index