您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:126 来源:vckbase.com

本文章共4714字,分3页,当前第3页,快速翻页:
 


4-6:完成代码
STDMETHODIMP CDispSimple::Add(VARIANT v1, VARIANT v2, VARIANT *pVal)

{

	::VariantInit( pVal );	// 永远初始化返回值是个好习惯



	CComVariant v_1( v1 );

	CComVariant v_2( v2 );



	if((v1.vt & VT_I4) && (v2.vt & VT_I4) )	// 如果都是整数类型

	{	// 这里比较没有使用 == ,而使用了运算符 & ,你知道这是为什么吗?

		v_1.ChangeType( VT_I4 );	// 转换为整数

		v_2.ChangeType( VT_I4 );	// 转换为整数



		pVal->vt = VT_I4;

		pVal->lVal = v_1.lVal   v_2.lVal;	// 加法

	}

	else

	{

		v_1.ChangeType( VT_BSTR );	// 转换为字符串

		v_2.ChangeType( VT_BSTR );	// 转换为字符串



		CComBSTR bstr( v_1.bstrVal );

		bstr.AppendBSTR( v_2.bstrVal );	// 字符串连接



		pVal->vt = VT_BSTR;

		pVal->bstrVal = bstr.Detach();

	}

	return S_OK;

}



STDMETHODIMP CDispSimple::Upper(BSTR str, BSTR *pVal)

{

	*pVal = NULL;	// 永远初始化返回值是个好习惯



	CComBSTR s(str);

	s.ToUpper();	// 转换为大写



	*pVal = s.Copy();



	return S_OK;

}

刚才卖的关子,现在开始揭密了......加法函数Add()不使用long类型,而使用VARIANT的好处是:函数内部动态判断参数类型,如果是整数则进行整数加法,如果是字符串,则进行字符串加法(字符串加法就是字符串连接哈)。也就是说,如果参数是VARIANT,那么我们就可以实现函数的可变参数类型呀。怪怪个咙,真爽!
逆@风@者

五、脚本中调用举例
打开“记事本”程序,输入脚本程序,保存为 xxx.vbs 文件。然后在资源管理器里就可以双击运行啦。

如果你有能力,也可以用 JScript 书写上面的程序,然后保存为 xxx.js 文件,同样也可以在资源管理器里运行。另外需要说明的一点是,脚本程序文件的图标(win 2000下)是,如果你不是这样的(有一个软件叫“XX 解霸”。写这款软件的人水平太低,它居然使用 .vbs 的扩展名文件作为它的数据流文件,破坏了系统默认的文件类型影射模式,咳......),那么需要重新设置,方法是:


六、WORD 中使用举例

6-1:录制一段宏程序





6-2:选择“键盘”,当然你也可以把这个“宏”程序放到“工具栏”上去。这里我们随便指定一个快捷键,比如Ctrl Z


6-3:开始录制了,下面你随便输入点什么东东。然后点“停止”
6-4:接下来,我们执行菜单,选择这个刚刚录制的宏,然后编辑它



6-5:点“编辑”按钮,输入下面的程序:



不做解释了,你如果会一点点 VB ,就能看懂这个东东哈。然后保存关闭 VBA 的编辑器(注4)。
6-6:执行啦,执行啦,看看有什么效果呀......



然后按快捷键Ctrl Z



你已经扩展了 MS WORD 的功能啦,嘿啦啦啦啦,嘿啦啦啦,天空出彩霞呀......我们只是举了一个简单的例子,其实这个例子并没有什么实际应用的意义,因为人家 WORD 本身就有大小写转换功能。但通过这个小例子,你可以体会出自动化组件的功能了,有够厉害吧?!

七、小结
没小结!嘿嘿......上当喽:-)
注1:以后我们描述接口函数,都采用 IDL 的形式了。
注2:双接口,是支持 IDispatch 接口的一种特殊接口方式,后面马上就要讲啦
注3:VBA 是专门开发 Office 的一种语言---Visual Basic for Application
 
 
本文章更多内容<<上一页 - 1 - 2 - 3
相关文章

MFC程序员的WTL指南: Part II - WTL 界面基
用VC 制作QQ自动登陆软件
用udp协议通讯示例
SendMessage和PostMessage,total ordering
关于调试时输出的字符串信息
创建分层窗口,实现图像渐变
关于CEdit控件的透明 --作者:monsoon
think window procedure
DCT快速变换
如何提取网页中所有链接
一个简单的读写注册表实例
利用辅助线程更新用户界面UI
如何更改其它程序 ListView 控件中某个 Ite
如何在NT下获取进程的路径
ATL布幔之下的秘密(5)
定制编辑框的上下文菜单
初试驱动---OV511 摄像头驱动开发
关于SendMessage
COM 组件注册方法
枚举声明,模板函数特化

相关评论


本文章所属分类:首页 VC++

  热门关键字: