C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Урок 11. Сохранение свойств / Библиотека ATL / Visual C++

Visual C++. ATL
Урок 11. Сохранение свойств

Сейчас наш элемент ActiveX не сохраняет свои свойства. Давайте посмотрим, что надо сделать для сохранение свойств.

Найдите пару макросов BEGIN_PROP_MAP и END_PROP_MAP в файле FirstATL.h и внесите следующие изменения:

BEGIN_PROP_MAP(CFirstATL)
    PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
    PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
    PROP_ENTRY("BackColor", DISPID_BACKCOLOR, CLSID_StockColorPage)
    PROP_ENTRY("num", 1, CLSID_NULL)
    PROP_ENTRY("MyName", 4, CLSID_NULL)
    // Example entries
    // PROP_ENTRY("Property Description", dispid, clsid)
    // PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()

Все! Теперь пользовательские свойства num и MyName будут сохраняться! Немного пояснений, что же мы тут такого сделали. Для сохранения свойств используется макрос PROP_ENTRY. Первый его параметр - это имя нашего свойства. Второй - это идентификатор нашего свойства (кстати, это число у вас может быть другое). Для его выяснения просто сделайте двойной щелчок на нужном свойстве внешнего интерфейса IFirstATL. Число в круглых скобках после id нам и надо:

Идентификатор свойства

И, наконец, третий параметр у макроса PROP_ENTRY - это идентификатор страницы со свойствами для нашего элемента ActiveX. Так как у нашего элемента нет (пока) страницы свойств, то ставим CLSID_NULL.

Кстати, обратите внимание, что встроенное свойство BackColor сохранялось и без нашего участия. И именно потому, что для него уже есть строка

    ...
    PROP_ENTRY("BackColor", DISPID_BACKCOLOR, CLSID_StockColorPage)
    ...

С сохранением свойств все!