Добавление свойства с переменной членом и сообщением об изменении его.
Пусть MyProp – свойство, при изменении которого не нужна специальная обработка контрольного элемента. Тогда для его реализации можно использовать способ, связанный только с переменной-членом класса, и с оповещением об изменении свойства.
Для добавления свойства MyProp необходимо:
1.
Загрузить Ваш проект.
2. В меню View
выбрать ClassWizard.
3. Выбрать вкладку Automation.
4. Выберете имя класса из списка Class name.
5. Щелкнуть на кнопке Add Property.
6. В списке External
Name напечатать нужное свойство, например, MyProp.
7. В группе Implementation
указать Member variable ods.
8. В списке Type
выбрать тип свойства, например, short.
9. Проверить, что Notification function содержит OnMyPropChanged, а Variable name – m_myProp.
10. Щелкнуть на кнопке OK для того, чтобы закрыть диалог Add Property.
Заметьте, что в разделе Implementation появился текст:
short m_myProp;
void OnMyPropChanged();
11. Щелкнуть на кнопке OK для того, чтобы закрыть диалог ClassWizard.
ClassWizard изменяет код и в файле .H, и в файле .ODL, и в файле .CPP.
Така наше свойство – переменная- член класса, то в файле .H появилась соответствующие строки:
short m_myProp;
afx_msg void OnMyPropChanged();
В файле .CPP в карте диспетчеризации добавится макрос:
DISP_PROPERTY_NOTIFY(CMyCtrlCtrl, "MyProp", m_myProp, OnMyPropChanged, VT_I2)
Макрос DISP_PROPERTY_NOTIFY связывает имя свойства MyProp с:
· Переменной класса M_myProp;
· Функцией OnMyPropChanged, которая вызывается при изменении свойства;
· Типом VT_I2, который соответствует нашему свойству.
ClassWizard также добавляет определение функции OnMyPropChanged в файл .CPP:
void CMyCtrlCtrl::OnMyPropChanged()
{
// TODO: Add notification handler code
SetModifiedFlag();
}
В файл .ODL добавляется строка, определяющая уникальный идентификатор свойства:
[id(1)] short MyProp;
Если Вы не хотите использовать нотификационную функцию, то удалите ее имя в мастере.