На этом шаге мы рассмотрим создание страницы специальных свойств.
По завершении реализации интерфейса ActiveX-элемента стоит заняться созданием страниц свойств, на которых пользователи смогут просматривать и устанавливать параметры ActiveX-элемента. В каркасе имеется ряд макросов PROPPAGEID, позволяющих определять массив идентификаторов страниц свойств для элемента управления. Код по умолчанию, созданный мастером ActiveX ControlWizard проекта OneArmedBandit, находится в файле OneArmedBanditCtl.cpp и выглядит так:
BEGIN_PROPPAGEIDS(COneArmedBanditCtrl, 1) PROPPAGEID(COneArmedBanditPropPage::guid) END_PROPPAGEIDS(COneArmedBanditCtrl)
Обратите внимание, что эта структура, в отличие от диспетчерской карты и карты событий, не поддерживается ClassWizard. Данный код вы должны написать самостоятельно.
В приведенном выше коде единственная запись PROPPAGEID в таблице относится к заданной по умолчанию странице, созданной для элемента управления. ActiveX ControlWizard создает шаблон диалогового окна и класс диалога (на базе класса COlePropertyPage), которые Вы можете отредактировать и откомпилировать, чтобы со здать страницу свойств, предоставляющую доступ к специальным свойствам Вашего элемента.
Сейчас мы создадим страницу свойств, на которой пользователь сможет задавать значение специального свойства NumberOfSymbols.
Рис.1. Реализация страницы специальных свойств
Рис.2. Добавление переменной
Посмотрите на текст функции DoDataExchange() класса СOneArmedBanditPropPage. Обратите внимание, что в дополнение к DDX/DDV-функциям ClassWizard добавил следующую строку:
DDP_Text(pDX, IDC_NUMSYMBOLS, m_numsymbols, _T("NumberOfSymbols") );
Это одна из ряда функций с префиксом DDP_, предоставляемых MFC для обмена данными между страницей свойств и самими свойствами ActiveX-элемента. Обратите внимание, что здесь используется диспетчерское имя свойства, так что Вам не придется писать код лдя создания дополнительных связей между классами COneArmedBanditPropPage и COneArmedBanditCtrl.
Текст приложения можно взять здесь (34,3 Кб).
На следующем шаге мы рассмотрим страницу стандартных свойств.