我开发了一个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");
}
};