Поделиться через


Элементы управления ActiveX в MFC. Добавление дополнительной страницы пользовательских свойств

Иногда элемент управления ActiveX будет иметь больше свойств, чем может быть достаточно подходящим для одной страницы свойств. В этом случае можно добавить страницы свойств в элемент activeX, чтобы отобразить эти свойства.

В этой статье описывается добавление новых страниц свойств в элемент activeX, который уже имеет хотя бы одну страницу свойств. Дополнительные сведения о добавлении страниц свойств акций (шрифт, рисунок или цвет) см. в статье MFC ActiveX Controls: Using Stock Property Pages.

В следующих процедурах используется пример платформы управления ActiveX, созданной мастером управления ActiveX. Таким образом, имена и идентификаторы классов уникальны для этого примера.

Дополнительные сведения об использовании страниц свойств в элементе ActiveX см. в следующих статьях:

Вставка нового шаблона страницы свойств в проект

  1. Открыв проект элемента управления, откройте представление ресурсов в рабочей области проекта.

  2. Щелкните правой кнопкой мыши представление ресурсов, чтобы открыть контекстное меню и нажмите кнопку "Добавить ресурс".

  3. Разверните узел диалогового окна и выберите IDD_OLE_PROPPAGE_SMALL.

  4. Нажмите кнопку "Создать" , чтобы добавить ресурс в проект.

  5. Выберите новый шаблон страницы свойств, чтобы обновить окно свойствпредставлении ресурсов).

  6. Введите новое значение для свойства идентификатора. В этом примере используется IDD_PROPPAGE_NEWPAGE.

  7. Нажмите кнопку Сохранить на панели инструментов.

Связывание нового шаблона с классом

  1. Откройте представление классов.

  2. Щелкните правой кнопкой мыши представление классов, чтобы открыть контекстное меню.

  3. В контекстном меню выберите команду Добавить, а затем — Добавить класс.

    Откроется диалоговое окно Добавление класса.

  4. Дважды щелкните шаблон класса MFC.

  5. В поле "Имя класса" мастера классов MFC введите имя нового класса диалогового окна. (В этом примере CAddtlPropPage.)

  6. Если вы хотите изменить имена файлов, нажмите кнопку "Изменить". Введите имена для файлов реализации и заголовков или примите имена по умолчанию.

  7. В поле "Базовый класс" выберите COlePropertyPage.

  8. В поле "Идентификатор диалогового окна" выберите IDD_PROPPAGE_NEWPAGE.

  9. Нажмите кнопку " Готово ", чтобы создать класс.

Чтобы разрешить пользователям элемента управления доступ к этой новой странице свойств, внесите следующие изменения в раздел макросов страницы свойств элемента управления (расположенный в файле реализации элемента управления):

BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
   PROPPAGEID(CMyAxUIPropPage::guid)
   PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)

Обратите внимание, что необходимо увеличить второй параметр макроса BEGIN_PROPPAGEIDS (число страниц свойств) с 1 до 2.

Также необходимо изменить файл реализации элемента управления (. CPP-файл для включения заголовка (. H) файл нового класса страницы свойств.

Следующий шаг включает создание двух новых строковых ресурсов, которые будут предоставлять имя типа и подпись для новой страницы свойств.

Добавление новых строковых ресурсов на страницу свойств

  1. Открыв проект элемента управления, откройте представление ресурсов.

  2. Дважды щелкните папку "Таблица строк", а затем дважды щелкните существующий ресурс таблицы строк, в который требуется добавить строку.

    Откроется строка таблицы в окне.

  3. Выберите пустую строку в конце строки и введите текст или подпись строки: например, "Дополнительная страница свойств".

    Откроется страница "Свойства строки" с полями заголовков и идентификаторов. Поле заголовка содержит строку, введенную вами.

  4. В поле идентификатора выберите или введите идентификатор строки. Нажмите клавишу ВВОД, когда закончите работу.

    В этом примере используется IDS_SAMPLE_ADDPAGE для имени типа страницы нового свойства.

  5. Повторите шаги 3 и 4, используя IDS_SAMPLE_ADDPPG_CAPTION для идентификатора и страницы дополнительных свойств для подпись.

  6. В. 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);
    }
    
  7. Измените конструктор CAddtlPropPage таким образом, чтобы IDS_SAMPLE_ADDPPG_CAPTION передается COlePropertyPage конструктору следующим образом:

    CAddtlPropPage::CAddtlPropPage() :
       COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION)
    {
    
    }
    

После внесения необходимых изменений перестроение проекта и использование тестового контейнера для тестирования новой страницы свойств. Сведения о том, как получить доступ к Контейнеру для тестирования, см. в разделе Тестирование свойств и событий в Контейнере для тестирования .

См. также

Элементы ActiveX библиотеки MFC