2013-04-15 5 views
0

У меня есть элемент управления 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, но никогда, когда я изменяю размер элементов управления.

+1

Вам необходимо переопределить 'virtual void OnDraw (CDC * pdc, const CRect & rcBounds, const CRect & rcInvalid);' вместо обработки WM_PAINT. Не могу объяснить WM_SIZE без дополнительной информации - это управление без окон? –

+0

ОК, это был OnDraw(), он решил обе проблемы :-) Спасибо! – Elmi

ответ

0

Как упоминалось Роджером Роуланд: OnDraw() делает трюк.