描述:
在一个ATL工程中,加入一个控件和一个普通类,在类的方法中如何引发控件的事件?
#ifndef _FZPRINTATLCP_H_
#define _FZPRINTATLCP_H_
template <class T>
class CProxy_IFzPrintYEvents : public IConnectionPointImpl<T, &DIID__IFzPrintYEvents, CComDynamicUnkArray>
{
//Warning this class may be recreated by the wizard.
public:
HRESULT Fire_ErrorInfo(SHORT iErrorNum, BSTR bstrErrorInfo)
{
...........
}
};
#endif
如果是在一个控件类中是可以直接调用Fire_Capture的。
但是如果是在一个我自己写的类当中呢?比如CMyClass中,当这个类对象
执行到某种情况下,我想激发这种事件,在CMyClass中怎么调用Fire_Capture呢?
解决方案1:
有好几种方法,我认为最简单的是你把控件的指针传到你自己的类中,在你的控件中再加一个接口,在接口中调用你的事件,而在你自己的类中当需要时调那个新加的接口。我就是经常这样做的,不过我的是没有界面的COM对象,而你的是控件。
解决方案2: 这个简单呀!在你的控件的接口中添加一个方法eg:
id[1] HRESULT OnCapture();
在实现中添加一句代码就可以了eg:
Fire_Capture();
在你的类中import 你控件的tlb eg:
#import "yours_tlb.tlb"
然后在你要激发的时候创建一个控件的接口对象通过这个对象调用这个OnCapture();
就可以了!

