无法将ATL Control中的已触发事件捕获到另一个ATL控件中

时间:2016-01-29 09:55:16

标签: mfc atl

我开发了一个ATL控件,我必须在3个项目中使用(MFC,VB和ATL Control)。

我的ATL控件在编辑编辑控件中的文本时触发事件。

我成功地能够在MFC,VB以及ATL控件的主对话框类中捕获此事件。

但是我必须在ATL控件的另一个对话框(不是主对话框)中添加控件。但在这里,我不是要抓住被解雇的事件。

实际问题似乎是我的" IDispEventImpl"无法正确SINK,因为在我的连接点类的函数中,我的m_vec大小为空。当事件正常工作时,我将m_vec的大小设为4。

任何人都可以帮我解决这个问题。

感谢。

我的代码在已实现控件的对话框的头文件中。

#include <atlhost.h>

class CFactorProp : 
    public CAxDialogImpl<CFactorProp>,
    public IDispEventImpl<IDC_FPCONTROL1, CFactorProp>
{

public:
    enum { IDD = IDD_FACTORPROP };

    BEGIN_MSG_MAP(CFactorProp)
        CHAIN_MSG_MAP(CAxDialogImpl[CFactorProp])
    END_MSG_MAP()

    BEGIN_SINK_MAP(CFactorProp)
        SINK_ENTRY(IDC_FPCONTROL1, 1, EnableOKButton)
    END_SINK_MAP()

    HRESULT __stdcall EnableOKButton()
    {
        //MessageBox("Event Fired", "Test");
    }
};

0 个答案:

没有答案