ActiveX с нуля


Добавление другой страницы свойств. - часть 2


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

BEGIN_PROPPAGEIDS(CMyCtrlCtrl, 2)

    PROPPAGEID(CMyCtrlPropPage::guid)

   PROPPAGEID(CAddtlPropPage::guid)

...

END_PROPPAGEIDS(CMyCtrlCtrl)

Здесь CAddtlPropPage – имя нового класса. В макросе BEGIN_PROPPAGEIDS измените второй параметр (счетчик страниц) , увеличив его на 1.

В этот же файл реализации элемента включите h-файл нового класса страницы.

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

1.      Откройте вкладку ResourceView.

2.      Дважды щелкните на папке String Table.

3.      Щелкните на пустой строке в правой части окна и впечатайте заголовок строки, например, Новая страница. При этом откроется окно свойств, в котором в элементе Caption появится введенная строка. В элементе ID впечатайте обозначение идентификатора, например, IDS_ADDPAGE. Нажмите кнопку OK.

4.      Повторите пункт 3 для вставки строки с заголовком для страницы, например, Дополнительная страница, с идентификатором IDS_ADDPPG_CAPTION.

5.      В файле .CPP Вашего нового класса (например, CAddtlPropPage) измените CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry так, чтобы в функцию AfxOleRegisterPropertyPageClass

передавался в качестве параметра идентификатор диалога-страницы свойств:

BOOL CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry(BOOL bRegister)

{

    if (bRegister)

        return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(),

                     m_clsid, IDS_ADDPAGE);

    else

        return AfxOleUnregisterClass(m_clsid, NULL);

}

6.      Измените конструктор нового класса CAddtlPropPage

так, чтобы IDS_ADDPPG_CAPTION передавался в COlePropertyPage конструктор:

CAddtlPropPage::CAddtlPropPage() :

// ****** Add your code below this line ********** //

     COlePropertyPage(IDD,  IDS_ADDPPG_CAPTION)

// ****** Add your code above this line ********** //

{

    //{{AFX_DATA_INIT(CAddtlPropPage)

    // NOTE: ClassWizard will add member initialization here

    //    DO NOT EDIT what you see in these blocks of generated code !

    //}}AFX_DATA_INIT

}

Теперь Вы можете перестроить проект и протестировать элемент в Test Container, чтобы увидеть новую страницу свойств.

 




- Начало -  - Назад -  - Вперед -