2013-04-15 43 views
0

我有一個基於MFC的ActiveX控件,其中一些重要的事情不起作用。從不調用大小事件,只有當我單擊控件的邊框(在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 
} 

任何想法在這裏缺少什麼?

編輯:只是澄清:在OCX的初始化階段調用一次OnSize(),但從來沒有當我改變控件的大小。

+1

您需要重寫虛擬void OnDraw(CDC * pdc,const CRect&rcBounds,const CRect&rcInvalid);'而不是處理WM_PAINT。無法解釋WM_SIZE沒有更多的信息 - 它是一個無窗口控制? –

+0

好吧,它是OnDraw(),它解決了這兩個問題:-)謝謝! – Elmi

回答

0

正如羅傑羅蘭提到的:OnDraw()能夠做到這一點。