利用向导,建立ATL的ActiveX控件,利用ClassWizard生成OnCreate函数,
在构造函数里,m_bWindowOnly = TRUE;
在OnCreate中操作一些成员变量,添加一个定时器。发现,这个控件在Activex控件测试容器中,可以很好运行;
在IE中也能很好运行;
我建立一个MFC的对话框程序,利用右键“插入Activex控件”,也能很好运行。可是,我利用代码,把这个Activex控件插入到richedit2.0中去的时候,这个控件能正确添加,可是不能动起来,发现定时器没有工作,我debug进去,看到OnCreate函数就没有执行过。这是为什么?注:我的这个Activex控件是ATL的,不是MFC的。richedit2.0也是好的,经过了其他的测试。
把Activex控件插入到richedit中,我参考了这里的代码http://hi.baidu.com/favesoft/blog/item/844a9bd4a4dbcc01a08bb765.html谢谢!
在构造函数里,m_bWindowOnly = TRUE;
在OnCreate中操作一些成员变量,添加一个定时器。发现,这个控件在Activex控件测试容器中,可以很好运行;
在IE中也能很好运行;
我建立一个MFC的对话框程序,利用右键“插入Activex控件”,也能很好运行。可是,我利用代码,把这个Activex控件插入到richedit2.0中去的时候,这个控件能正确添加,可是不能动起来,发现定时器没有工作,我debug进去,看到OnCreate函数就没有执行过。这是为什么?注:我的这个Activex控件是ATL的,不是MFC的。richedit2.0也是好的,经过了其他的测试。
把Activex控件插入到richedit中,我参考了这里的代码http://hi.baidu.com/favesoft/blog/item/844a9bd4a4dbcc01a08bb765.html谢谢!
为什么不用FinalConstruct
谢谢你。FinalConstruct中不能设置定时器啊,我在里面试过的。
你应该通过CRichEditCtrl::GetIRichEditOle()或者发送EM_GETOLEINTERFACE消息来获得IRichEditOle接口指针,然后调用InsertObject方法插入你的控件。
谢谢你!我去尝试你的方法。
////////////////////////////////////////////////////////////////////////////////////
“你的控件还需要实现IOleObject接口才能在richedit中运作”我在MSND上看到,IOleObject接口就是IDataObject和IPersistStorage的一起应用。而我的activex控件是用vc2003向导做的,在做的时候,就已经支持了IDataObject和IPersistStorage。
/////////////////////////////////////////////////////////////////////////////////////
为什么activex控件的oncreate函数没有执行呢?
你能不能留个email给我啊,我把代码工程发给你,呵呵。
http://blog.csdn.net/gxulg/archive/2005/03/04/311057.aspx