У меня есть элемент управления ActiveX на основе MFC, где некоторые важные вещи не работают. Событие размера никогда не вызывается, а содержимое элементов управления перерисовывается только тогда, когда я нажимаю рамку элемента управления (в тестовом контейнере ActiveX).MFC-ActiveX не обновляется/перекрашивается автоматически
Это мой код для размерного события в заголовочном файле:
public:
afx_msg void OnPaint();
... и в исходном файле:
BEGIN_MESSAGE_MAP(CBeamConstruXCtrl, COleControl)
ON_WM_SIZE()
ON_WM_PAINT()
ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
END_MESSAGE_MAP()
void MyCtrl::OnPaint()
{
//this is never called also when I change the size of the control in test container
}
Любые идеи, что здесь не хватает?
Редактирование: просто пояснение: OnSize() вызывается один раз в фазе инициализации OCX, но никогда, когда я изменяю размер элементов управления.
Вам необходимо переопределить 'virtual void OnDraw (CDC * pdc, const CRect & rcBounds, const CRect & rcInvalid);' вместо обработки WM_PAINT. Не могу объяснить WM_SIZE без дополнительной информации - это управление без окон? –
ОК, это был OnDraw(), он решил обе проблемы :-) Спасибо! – Elmi