Özel öğe türleri ek nesne nasıl eklerim?

Varsayılan olarak, ek nesne için CSnapInItemImpl, türetilmiş bir tek veri sınıfı atl nesne sihirbaz oluşturur.

Bazı durumlarda, ek nesnesi için bir veya daha fazla özel öğe türleri uygulamak gerekir. Kopyalama ve varolan veri sınıfı yeni bir sınıf değiştirmek ve projenin bazı ek değişiklikler yapmak için basit bir yaklaşım olduğunu. Bu yordamı üç adımda gerçekleştirilir:

Özel öğe veri sınıfı oluşturma

Ek nesnenin varolan veri sınıfı Bildirgesi kopyalayıp sonra sonuçları ayrı bir sınıf oluşturmak için ilk adım içerir.

Veri sınıf bildirimi projnamebaşında bulunabilir.H dosyası ek proje. Bu sınıfın bildirimini bulun ve Kopyala Yapıştır altındaki ilk bildirim sonucu.

Yeni yapıştırılan bildiriminde, herhangi bir oluşumu birinci sınıf adının yeni ikinci sınıf adı ile değiştirin. Örneğin, proje veri sınıfı çağrılırsa CMySnapInData adlı bir özel veri öğesi sınıf oluşturmak istediğiniz ve CMyCustomSnapInData , ilk kopyalayıp ilk veri sınıfı Bildirgesi. Tüm geçtiği için arama CMySnapInData (yapıştırılan bölümünde) ve değiştirmekCMyCustomSnapInData.

Özel veri sınıfı GUID'lerinin uygulama

Sınıf bildirimindeki yanı sıra, veri sınıfı bir GUID bildirimini ve dört statik veri üyeleri vardır. GUID ve veri üyeleri projnamesonunda tanımlanır.cpp eğe. Bir örnek açıklamaları aşağıdadır:

static 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

Bu veri üyeleri bir GUID değişir çünkü ilk (GUIDGEN kullanarak) yeni bir GUID oluşturur ve sonra kopyalayıp beş beyanlar, ilk veri sınıfı altında gerek. Bir kopyasını oluşturduktan sonra yeni oluşturulan GUID kullanacak şekilde değiştirin. Örneğin, önceki kod örneği kullanarak ve yeni bir GUID oluşturmak, ikinci veri sınıfı sonuç şöyle olacaktır:

static 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

Bu değişiklikler tamamlandıktan sonra orada bir adım kaldı: eklenti nesnesi için kayıt defteri dosyasını değiştirme.

Değiştirme.rgs dosya eklentisi proje

Amacı.rgs ek nesne ve tüm bileşenlerinin kayıt dosyasıdır. Bir özel veri öğesi sınıf eklediğiniz çünkü değiştirmek gerekiyor.Bu sınıf çok kayıt rgs dosya.

&Notnbsp;  Önceki adımda oluşturulan GUID bu aşamada kullanılır.

İki alanda bulunmaktadır.rgs dosyasını değiştirmeniz gerekebilir. Her ikisi de hızla arayarak bulunabilir NodeTypes anahtar kelime.

İlkinin altındadır NoRemove Snapins bölüm. İçinde yuvalanmış NodeTypes bölümünde, Varolanı aynı GUID biçimi kullanarak varolan bir hemen sonra yeni GUID Ekle.

İkinci oluşumu olduğunu NoRemove NodeTypes bölüm. Kod bu bölümde, içinde hemen sonra yapıştırın ve başvurulan GUID GUID özel sınıf değiştirme kopyalama.

Bu ek proje değişikliklerini tamamlar. Sonra başarılı bir derleme, yeni bir özel öğe türü olacak.

Index