不好意思问个问题,有关获得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组件实例,如何获得该组件的事件呢?
谢谢!!!
解决方案 »
- button单击事件没有反应
- 请教下各位大大,关于一个数组传递问题,请各位大大赐教
- vista:程序过了UAC还要什么权限才能修改与系统相关的注册表项?
- 在MFC中如何调用cmd.exe程序,并可以传递一些命令行参数
- 好心人求助!关于accept()接受返回一个新套接字的问题??
- 使用skin++时用到多线程界面更新不过来的问题
- 高分求学生成绩查询分析系统代码及设计文档
- 需要下载一个FTP上的文件,需要得知下载进度.如果不自己使用SOCKET封装FTP协议,那用什么比较好?
- 如何用VC实现对网页和网络数据库的请求??
- 用CWebBrowser2如何处理弹窗问题,还有一个代理问题,100分,不够再开贴加
- 关于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
谢谢了