Додавання елемента нестандартні оснащення об'єкта?

За промовчанням майстер об'єкт ATL створює клас даних, отриманих від CSnapInItemImpl, для оснащення об'єкта.

У деяких випадках потрібно реалізувати настроюваний елемент типів для оснащення об'єкта. Найпростіший підхід полягає в тому, щоб копіювати та змінити новий клас з існуючих даних класу і зробити деякі додаткові зміни до проекту. Ця процедура, що здійснюється в три кроки:

Створення користувацьких елемент даних класу

Перший крок передбачає копіювання декларації наявних даних класу для оснащення об'єкта і потім змінити результатів, щоб створити окремий клас.

Декларація клас даних можна знайти на початку PROJNAME.H файл проекту оснастки. Знайдіть цей клас декларації, копіювати та вставляти результат нижче першу заяву.

У декларації нововставлені замінити будь-яких входжень першого класу ім'я ім'я нового другого класу. Наприклад, якщо ваш проект класу даних називається CMySnapInData і ви хочете створити настроювані дані елемент клас під назвою CMyCustomSnapInData , спочатку скопіюйте та вставте декларації даних класу. Шукати будь-яких входжень CMySnapInData (у розділі вставленого) і замінити їїCMyCustomSnapInData.

Впровадження GUID для користувача даних класу

На додаток до класу декларації клас даних має GUID декларації та чотирьох членів статичні дані. GUID і даних членів визначається в кінці PROJNAME.CPP-файл. Нижче наведено приклад-Декларація:

статичний константа GUID CProjNameGUID_NODETYPE = {0xb386c6b, 0x8633, 0x11d1, {0xb0, 0x8, 0x0, 0xc0, 0x4f, 0xb9, 0x94, 0x36}};
константа GUID * nbsp; CProjNameData::m_NODETYPE = & CsdfdsfGUID_NODETYPE;
константа TCHAR * CProjNameData::m_SZNODETYPE = _T("0B386C6B-8633-11D1-B008-00C04FB99436");
константа TCHAR * CProjNameData::m_SZDISPLAY_NAME = _T("Csdfdsf");
константа CLSID * CProjNameData::m_SNAPIN_CLASSID = & CLSID_sdfdsf

Тому, що ці члени даних залежить від GUID, потрібно спочатку створити новий GUID (за допомогою GUIDGEN) і потім скопіюйте та вставте п'ять декларацій, початкових даних класу, безпосередньо під. Після створення копії, змінити його, щоб використовувати новостворену GUID. Наприклад, за допомогою попередніх зразок коду та генерації нових GUID, результат для другого класу даних буде виглядати наступним чином:

статичний константа GUID CMyCustomSnapInGUID_NODETYPE = nbsp;  {0x8dbeb252, 0x9201, 0x11d1, {0xa8, 0xd6, 0x0, 0x60, 0x8, 0x93,
        0x8f, 0xb8}};
константа GUID * CMyCustomSnapIn::m_NODETYPE = & CMySnapInGUID_NODETYPE;
константа TCHAR * CMyCustomSnapIn::m_SZNODETYPE =
    _T("8DBEB252-9201-11D1-A8D6-006008938FB8");
константа TCHAR * CMyCustomSnapIn::m_SZDISPLAY_NAME = _T("CMyCustomSnapIn");
константа CLSID * CMyCustomSnapIn::m_SNAPIN_CLASSID = & CLSID_MyCustomSnapIn

Після того, як ці модифікації були виконані, є одним кроком ліворуч: зміна файлу реєстру для оснащення об'єкта.

Зміни в.РГС файл проекту оснастки

Призначення в.РГС файл є реєстрація оснащення об'єкта і всіх його компонентів. Тому, що ви додали елемент клас користувацькі дані, вам потрібно змінити на.Файл РГС зареєструвати цей клас занадто.

Примітка   GUID, отримані у попередній крок використовується в цей крок.

Існують дві області, в регіоні.РГС файл, який потрібно змінити. Як можна знайти швидко пошук в NodeTypes ключових слів.

Перше входження знаходиться в NoRemove Snapins розділі. У у вкладених NodeTypes розділ, додати нові GUID відразу після існуючий, використовуючи такий же формат GUID як існуючий.

Є другий екземпляр в у NoRemove NodeTypes розділі. Копіювати код у цьому розділі, вставте його в відразу після і змінити посилання GUID GUID користувача класу.

Це завершує модифікацій оснастки проекту. Після успішної компіляції ви будете мати новий тип настроюваний елемент.

Index