既定では、ATL オブジェクト ウィザードCSnapInItemImplから、スナップイン オブジェクトを派生する 1 つのデータ クラスを作成します。
いくつかのケースでは、1 つまたは複数のカスタム項目の種類のスナップインでオブジェクトを実装する必要があります。最も簡単な方法は、既存のデータ クラスから新しいクラスを変更していくつか追加の変更をプロジェクトにです。この手順は 3 つの手順で行われます:
スナップイン オブジェクトの既存のデータ クラスの宣言をコピーし、別のクラスを作成するには、結果を変更する最初のステップを含む。
データ クラスの宣言は、 PROJNAMEの先頭にあります。H ファイルをスナップイン プロジェクトの。このクラス宣言をコピーし、最初の宣言の下に結果を貼り付ける。
新しく貼り付けた宣言では、任意の最初のクラスの名前の新しい 2 番目のクラスの名前に置き換えてください。たとえば、プロジェクト データ クラスが呼び出されると CMySnapInData と呼ばれるカスタム データ項目クラスを作成する CMyCustomSnapInData を最初にコピー、最初のデータ クラスの宣言を貼り付けます。すべての検索 CMySnapInData (で貼り付けた) とそれを交換してくださいCMyCustomSnapInData。
クラス宣言に加え、データ クラス GUID 宣言と 4 つの静的データ メンバーがあります。GUID とデータ メンバーは、 PROJNAMEの終わりに定義されています。CPP ファイル。次の使用例の宣言です。:
静的 const GUID CProjNameGUID_NODETYPE = {0xb386c6b、0x8633、0x11d1、{0 xb 0xb0、0x8、0x0, 0 xc 0xc0、0x4f、0xb9、0x94、0x36 = 54}};const GUID ※ 特価;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 に依存するため、まず (GUIDGEN を使用)、新しい GUID を生成し、コピーして初期データ クラスの 5 つの宣言のすぐ下に貼り付ける必要があります。コピーを作成した後、新しく作成された GUID を使用するように変更します。たとえば、上記のコード サンプルを使用して、新しい GUID を生成する、2 番目のデータ クラスの結果ようになります:
静的 const GUID CMyCustomSnapInGUID_NODETYPE 特価; ={0x8dbeb252、0x9201、0x11d1、{0xa8、0xd6、0x0, 0x60、0x8、0x93、0x8f、stop 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
これらの変更が完了したら、ある 1 つのステップを左: スナップイン オブジェクトのレジストリ ファイルを変更します。
目的は。RGS ファイル スナップイン オブジェクトとそのすべてのコンポーネントを登録することです。カスタム データ項目クラスを追加しているので、変更する必要がありますは。RGS ファイルもこのクラスを登録するには。
注特価;この手順では、前の手順で生成された GUID が使用されます。(&N)。
2 つの領域では。RGS ファイルの変更する必要があります。両方ともすぐに検索して見つけることができます、 NodeTypes キーワード。
最初に見つかったの下では、 NoRemove Snapins セクション。入れ子になったで NodeTypes セクション、同じ GUID 形式を使用して、既存の 1 つとして、既存の 1 後すぐに、新しい GUID を追加。
2 番目のインスタンスでは、 NoRemove NodeTypes セクション。コードのこのセクションに記載、直後、貼り付けし、カスタム クラスの GUID を参照の GUID を変更のコピー。
これは、スナップインでプロジェクトの変更を完了します。成功したコンパイル後は、新しいカスタム項目の種類をが。