Элементы управления ActiveX в MFC. Добавление дополнительной страницы пользовательских свойств
Иногда элемент управления ActiveX будет иметь больше свойств, чем может быть достаточно подходящим для одной страницы свойств. В этом случае можно добавить страницы свойств в элемент activeX, чтобы отобразить эти свойства.
В этой статье описывается добавление новых страниц свойств в элемент activeX, который уже имеет хотя бы одну страницу свойств. Дополнительные сведения о добавлении страниц свойств акций (шрифт, рисунок или цвет) см. в статье MFC ActiveX Controls: Using Stock Property Pages.
В следующих процедурах используется пример платформы управления ActiveX, созданной мастером управления ActiveX. Таким образом, имена и идентификаторы классов уникальны для этого примера.
Дополнительные сведения об использовании страниц свойств в элементе ActiveX см. в следующих статьях:
Элементы ActiveX в MFC. Использование стандартных страниц свойств
Примечание.
Настоятельно рекомендуется, чтобы новые страницы свойств соответствуют стандарту размера для страниц свойств элемента управления ActiveX. Страницы свойств акции и цвета измеряют 250x62 диалоговых единиц (DLU). Страница свойств стандартного шрифта — 250x110 DLUs. Страница свойств по умолчанию, созданная мастером управления ActiveX, использует стандарт DLU 250x62.
Вставка нового шаблона страницы свойств в проект
Открыв проект элемента управления, откройте представление ресурсов в рабочей области проекта.
Щелкните правой кнопкой мыши представление ресурсов, чтобы открыть контекстное меню и нажмите кнопку "Добавить ресурс".
Разверните узел диалогового окна и выберите IDD_OLE_PROPPAGE_SMALL.
Нажмите кнопку "Создать" , чтобы добавить ресурс в проект.
Выберите новый шаблон страницы свойств, чтобы обновить окно свойств (в представлении ресурсов).
Введите новое значение для свойства идентификатора. В этом примере используется IDD_PROPPAGE_NEWPAGE.
Нажмите кнопку Сохранить на панели инструментов.
Связывание нового шаблона с классом
Откройте представление классов.
Щелкните правой кнопкой мыши представление классов, чтобы открыть контекстное меню.
В контекстном меню выберите команду Добавить, а затем — Добавить класс.
Откроется диалоговое окно Добавление класса.
Дважды щелкните шаблон класса MFC.
В поле "Имя класса" мастера классов MFC введите имя нового класса диалогового окна. (В этом примере
CAddtlPropPage
.)Если вы хотите изменить имена файлов, нажмите кнопку "Изменить". Введите имена для файлов реализации и заголовков или примите имена по умолчанию.
В поле "Базовый класс" выберите
COlePropertyPage
.В поле "Идентификатор диалогового окна" выберите IDD_PROPPAGE_NEWPAGE.
Нажмите кнопку " Готово ", чтобы создать класс.
Чтобы разрешить пользователям элемента управления доступ к этой новой странице свойств, внесите следующие изменения в раздел макросов страницы свойств элемента управления (расположенный в файле реализации элемента управления):
BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
PROPPAGEID(CMyAxUIPropPage::guid)
PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)
Обратите внимание, что необходимо увеличить второй параметр макроса BEGIN_PROPPAGEIDS (число страниц свойств) с 1 до 2.
Также необходимо изменить файл реализации элемента управления (. CPP-файл для включения заголовка (. H) файл нового класса страницы свойств.
Следующий шаг включает создание двух новых строковых ресурсов, которые будут предоставлять имя типа и подпись для новой страницы свойств.
Добавление новых строковых ресурсов на страницу свойств
Открыв проект элемента управления, откройте представление ресурсов.
Дважды щелкните папку "Таблица строк", а затем дважды щелкните существующий ресурс таблицы строк, в который требуется добавить строку.
Откроется строка таблицы в окне.
Выберите пустую строку в конце строки и введите текст или подпись строки: например, "Дополнительная страница свойств".
Откроется страница "Свойства строки" с полями заголовков и идентификаторов. Поле заголовка содержит строку, введенную вами.
В поле идентификатора выберите или введите идентификатор строки. Нажмите клавишу ВВОД, когда закончите работу.
В этом примере используется IDS_SAMPLE_ADDPAGE для имени типа страницы нового свойства.
Повторите шаги 3 и 4, используя IDS_SAMPLE_ADDPPG_CAPTION для идентификатора и страницы дополнительных свойств для подпись.
В. CPP-файл нового класса страницы свойств (в этом примере
CAddtlPropPage
) измените значениеCAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry
, чтобы IDS_SAMPLE_ADDPAGE передается AfxOleRegisterPropertyPageClass, как показано в следующем примере:BOOL CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry(BOOL bRegister) { if (bRegister) return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(), m_clsid, IDS_SAMPLE_ADDPAGE); else return AfxOleUnregisterClass(m_clsid, NULL); }
Измените конструктор
CAddtlPropPage
таким образом, чтобы IDS_SAMPLE_ADDPPG_CAPTION передаетсяCOlePropertyPage
конструктору следующим образом:CAddtlPropPage::CAddtlPropPage() : COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION) { }
После внесения необходимых изменений перестроение проекта и использование тестового контейнера для тестирования новой страницы свойств. Сведения о том, как получить доступ к Контейнеру для тестирования, см. в разделе Тестирование свойств и событий в Контейнере для тестирования .