Добавление другой страницы свойств.
ActiveX может иметь свойств больше, чем помещается на обну страницу. В этом случае вы можете добавить несколько дополнительных страниц. Ниже рассматривается добавление страниц свойств, если есть уже хотя бы одна страница.
Замечание: Cтрого рекомендуется, чтобы размеры страниц не менялись. Они составляют 250х62 единицы для базовой страницы и страницы цветов и 250х110 единиц для страницы шрифтов. Страница по умолчанию, созданная Сontrol Wizard, имеет размер 250х62 единицы. Если Вы измените размер, то каждый раз при открытии свойств будет выдаваться сообщение о несоответствии размеров.
Для того, чтобы создать дополнительную страницу Вы должны выполнить следующие действия:
1. Выбрать закладку ResourceView в Project Workspace.
2. В меню Insert щелкнуть на строке Resource.
3. Выбрать ресурс Dialog для создания нового диалога и дважды щелкнуть мышкой.
4. Удалить кнопки OK и Cancel.
5. Щелкнуть правой кнопкой мыши и откройте окно Dialog Properties. Впечатайте идентификатор диалога, например, IDD_PROPPAGE_NEWPAGE.
6. Выбрать вкладку Styles, из выпадающего списка Styles выбрать Child. из выпадающего списка Border выбрать None. Убедиться, что опция Titlebar не включена, а на закладке More Styles опция Visible не включена.
7. Дважды щелкнуть кнопкой мыши на окне диалога для запуска ClassWizard.
8. Добавить новый класс в диалоге Adding a Class.
9. Ввести имя нового класса в диалоге New Class в элементе Class Name.
10. Для изменения имена файлов можно щелкнуть на кнопке Change.
11. В качестве базового класса Вы должны выбрать ColePropertyPage в списке Base Class.
12. В элементе Dialog ID выбрать IDD_PROPPAGE_NEWPAGE.
13. Щелкнуть на OK, чтобы создать класс. Можно закрыть ClassWizard.
Чтобы пользователи контрольного элемента получили доступ к новой странице, сделайте следующие изменения в файле реализации контрольного элемента:
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, чтобы увидеть новую страницу свойств.