不好意思问个问题,有关获得COM组件事件的。我在程序中动态的生成一个ie浏览器实例,不是用的微软浏览器控件,而是如此:
CComPtr<IWebBrowser2> iebrowser;
....
CoInitialize(NULL);
HRESULT hr = iebrowser.CoCreateInstance(OLESTR("InternetExplorer.Application"));
if(FAILED(hr))
{
AfxMessageBox("cocreate iebrowser error");
return -1;
}
....
iebrowser->Navigate("www.sina.com.cn",...)
....
可是我怎么获得这个实例的事件呢?如调用Navigate方法后,页面下载完毕后的DocumentComplete事件。如果对ie浏览器不熟的话,那就一般的这种情况动态生成COM组件实例,如何获得该组件的事件呢?
谢谢!!!
CComPtr<IWebBrowser2> iebrowser;
....
CoInitialize(NULL);
HRESULT hr = iebrowser.CoCreateInstance(OLESTR("InternetExplorer.Application"));
if(FAILED(hr))
{
AfxMessageBox("cocreate iebrowser error");
return -1;
}
....
iebrowser->Navigate("www.sina.com.cn",...)
....
可是我怎么获得这个实例的事件呢?如调用Navigate方法后,页面下载完毕后的DocumentComplete事件。如果对ie浏览器不熟的话,那就一般的这种情况动态生成COM组件实例,如何获得该组件的事件呢?
谢谢!!!
解决方案 »
- 扩大交际圈,想和常年研究GIMP\CIMAGE\Paint.net\FreeImage\Devil\ImageMagick等人士交个朋友。
- 发送一个JPG的疑问
- vc做一小项目寻强人-网络编成方面的
- 向导页添加的问题
- 高分请教:本人开发的一个RSA加/解密软件,后续版本用MFC Automation开发了一个COM组件...
- 高分提问回答即得分:VC中如何使用oracle过程中游标返回结果集到界面修改后,再通过ADO进行updatebatch?错误提示:Insufficient base table
- 测试手机AT指令来发短信,我的手机是nokia8250,连接线咋么做?
- 如何将已有的程序封装为activeX控件
- 如何让EDIT控件只能接受数字按键?
- 全局变量和静态变量的作用域和访问权限有什么区别???
- 关于for的问题
- mfc
这样做我上面说的步骤MFC已经实现了,所以这样将简单得多。
如下:
// .h
class CXXX : CWnd
{
DECLARE_EVENTSINK_MAP
};// .cpp
BEGIN_EVENTSINK_MAP( CXXX, CWnd )
ON_EVENT( ... )
END_EVENTSINK_MAP()对于ATL,我还没查过,晚些时候再来发贴
原码该如何实现等等还有LOP大侠说的“实现时如果不关心的事件,可以不实现,但仍必须简单的返回一个错误代码”是什么意思呢
对于“实现时如果不关心的事件,可以不实现,但仍必须简单的返回一个错误代码”,因为事件接口也是一个接口,不过实现的是客户端而已,因此客户端必须实现接口里面所有的方法,如果客户端并不想响应所有的事件,也就是说不想实现事件接口中的所有方法,但由于是接口,必须全部实现,所以不想实现的接口也需要实现,不过用一个简单的return即可,一般返回return E_NOTIMPL;(可能记错)
而上面说的使用各种宏,都是针对事件接口(也称做出接口)是IDispatch派生接口的特例,ActiveX控件基本上都是使用IDispatch做为出接口的。对于使用IDispatch的出接口,关于代码具体怎么实现,并且是MFC的实现方式,我在下面的帖子中给出过一个简单的例子,你可以参考一下
http://expert.csdn.net/Expert/topic/2611/2611741.xml?temp=.9318811
http://expert.csdn.net/Expert/topic/2634/2634720.xml?temp=.4706995
谢谢了