WEB开发网
开发学院软件开发VC MFC程序员的WTL指南(7)包容ActiveX控件 阅读

MFC程序员的WTL指南(7)包容ActiveX控件

 2006-07-22 22:03:17 来源:WEB开发网   
核心提示: 填写事件映射链下一步是给CMainDlg添加事件映射链,这个映射链将我们感兴趣的事件和我们的处理函数联系起来,MFC程序员的WTL指南(7)包容ActiveX控件(6),我们要看的第一个事件是DownloadBegin,当浏览器开始下载一个页面时就会触发这个事件,这个参数必须是CC_STD
填写事件映射链

下一步是给CMainDlg添加事件映射链,这个映射链将我们感兴趣的事件和我们的处理函数联系起来。我们要看的第一个事件是DownloadBegin,当浏览器开始下载一个页面时就会触发这个事件,我们响应这个事件显示“please wait”信息给用户,让用户知道浏览器正在忙。在MSDN中可以查到DWebBrowserEvents2::DownloadBegin事件的原型

void DownloadBegin();

这个事件没有参数,也不需要返回值。为了将这个事件的原型转换成事件响应链,我们需要写一个_ATL_FUNC_INFO结构,它包含返回值,参数的个数和参数类型。由于事件是基于IDispatch的,所以所有的参数都用VARIANT表示,这个数据结构的描述相当长(支持很多个数据类型),以下是常用的几个:

VT_EMPTY: void

VT_BSTR: BSTR 格式的字符串

VT_I4: 4字节有符号整数,用于long类型的参数

VT_DISPATCH: IDispatch*

VT_VARIANT>: VARIANT

VT_BOOL: VARIANT_BOOL (允许的取值是VARIANT_TRUE和VARIANT_FALSE)

另外,标志VT_BYREF表示将一个参数转换成相应的指针。例如,VT_VARIANT|VT_BYREF表示VARIANT*类型。下面是_ATL_FUNC_INFO的定义:

#define _ATL_MAX_VARTYPES 8
struct _ATL_FUNC_INFO
{
  CALLCONV cc;
  VARTYPE vtReturn;
  SHORT   nParams;
  VARTYPE pVarTypes[_ATL_MAX_VARTYPES];
};

参数:

cc 我们的事件响应函数的调用方式约定,这个参数必须是CC_STDCALL,表示是__stdcall方式 vtReturn 事件响应函数的返回值类型 nParams 事件带的参数个数 pVarTypes 相应的参数类型,按从左到右的顺序

了解这些之后,我们就可以填写DownloadBegin事件处理的_ATL_FUNC_INFO结构:

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:MFC 程序员 WTL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接