Events MFC ActiveX不会自动刷新/重新绘制

Events MFC ActiveX不会自动刷新/重新绘制,events,mfc,activex,ocx,Events,Mfc,Activex,Ocx,我有一个基于MFC的ActiveX控件,其中一些重要的东西不起作用。永远不会调用size事件,只有在单击控件的边框时(在ActiveX测试容器中),才会重新绘制控件内容 这是头文件中大小事件的代码: public: afx_msg void OnPaint(); …并在源文件中: BEGIN_MESSAGE_MAP(CBeamConstruXCtrl, COleControl) ON_WM_SIZE() ON_WM_PAINT() ON_OLEVERB(AFX_

我有一个基于MFC的ActiveX控件,其中一些重要的东西不起作用。永远不会调用size事件,只有在单击控件的边框时(在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的初始化阶段调用一次,但在我更改控件大小时从未调用过。

正如Roger Rowland提到的:OnDraw()起作用。

您需要覆盖
虚拟void OnDraw(CDC*pdc、const-CRect&rcBounds、const-CRect&rcInvalid)而不是处理WM_油漆。没有更多信息无法解释WM_大小-它是一个无窗口控件吗?好的,它是OnDraw(),它解决了两个问题:-)谢谢!