к появлению нового макроса DISP_PROPERTY_EX
DISP_PROPERTY_EX(CMyCtrlCtrl, "Shape", GetShape, SetShape, VT_I2)
DISP_PROPERTY_EX(CMyCtrlCtrl, "Selected", GetSelected, SetNotSupported, VT_BOOL)
//}}AFX_DISPATCH_MAP
DISP_FUNCTION_ID(CMyCtrlCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
END_DISPATCH_MAP()
Каждое добавленное свойство приводит к появлению нового макроса DISP_PROPERTY_EX в карте диспетчеризации.
Для отражения состояния выбора и формы элемента управления необходимо к объявлению его класса вручную добавить переменные. В файл MyCtrlCtrl.h добавьте объявления:
BOOL m_bSelected;
short m_nShape;
Эти переменные надо инициализировать разумными значениями в конструкторе класса CMyCtrlCtrl:
m_bSelected = FALSE;
m_nShape = 0;
А теперь изменим добавленные мастером функции Get/Set:
short CMyCtrlCtrl::GetShape()
{
return m_nShape;
}
void CMyCtrlCtrl::SetShape(short nNewValue)
{
m_nShape = nNewValue;
SetModifiedFlag();
InvalidateControl();
}
BOOL CMyCtrlCtrl::GetSelected()
{
return m_bSelected;
}
Содержание Назад Вперед