mfc activeX 接口为默认参数(可选)的设置----VARIANT:DISPATCH、VT_DISPATCH类型的取值
来源:互联网 发布:软件著作权 设计说明书 编辑:程序博客网 时间:2024/06/08 08:37
c++中,可选参数,eg:
int Fun(char* a="aaa", int b=333);
3种调用都可以:Fun()、Fun("bbb")、Fun("bbb", 444);
注意:
1. 可选参数须在函数参数的最右边,调用时不能跨可选参数调用,即Fun(444)不可以。
2. 类,头文件申明了可选参数(即变量赋值),实现文件函数参数可不必写变量赋值,
即头文件申明int fun(int a=3);实现文件int fun(int a) {printf--a=3};
mfc做的activeX控件,网页调用可选参数的函数,现说下我的解决方法:
该可选参数,类型必须申明为VATIANT类型,具体如下:
<1> idl文件中:[id(2)] LONG Fun([optional]VARIANT a, [optional]VARIANT b);
<2> 头文件中:LONG FUN(VATIANT &a, VATIANT &b);
<3> 实现文件中:
1. DISP_FUNCTION_ID(CXXCtrl, "Fun", dispidFun, Fun, VT_I4, VTS_VARIANT VTS_VARIANT)
2. 见如下代码:
LONG CXXCtrl::Fun(VATIANT &a, VATIANT &b){AFX_MANAGE_STATE(AfxGetStaticModuleState());CString csTemp;if (a.vt == VT_DISPATCH) //这个类型困扰我多时,不了解,网上资料也很少,经长时间探索和测试,得出此方法可行{MessageBox("VT_DISPATCH");IDispatch *varCon = a.pdispVal;VARIANT varResult = {0};DISPPARAMS params = {NULL, NULL, 0, 0};varCon->Invoke(0, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, ¶ms, &varResult, NULL, NULL);csTemp = varResult.bstrVal;MessageBox(csTemp);}else if (a.vt == VT_BSTR){MessageBox("VT_BSTR");csTemp = a.bstrVal;MessageBox(csTemp);}else{//...}//................}
参考文档或链接:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms221479(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/aa705925(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/cc237569.aspx
http://www.cnblogs.com/jzxx/p/5521026.html
- mfc activeX 接口为默认参数(可选)的设置----VARIANT:DISPATCH、VT_DISPATCH类型的取值
- Swift基础语法: 31 - Swift的初始化, 默认属性值, 初始化参数, 内部和外部参数, 可选属性类型
- VARIANT类型 做参数实现函数的可变参数类型
- 关于VC从VARIANT类型取数据的小结
- VARIANT类型的用法
- VARIANT类型的用法
- VARIANT类型的用法
- VARIANT类型的用法
- VARIANT类型的用法
- BIOS HWI设置为Dispatch的作用
- MFC Activex与JavaScript的接口交互
- 函数的可选参数
- Java的可选参数
- visual studio: 为新建的项目设置默认参数
- MFC对话框初始化函数是在哪里?以及如何为MFC的EDIT控件设置默认显示值?
- SpringMVC Controller 返回值的可选类型
- SpringMVC Controller 返回值的可选类型
- SpringMVC Controller 返回值的可选类型
- VS2010无法调试问题解决 最近,因为公司开发的需要,对开发环境进行全面的升级,在这其中也遇到了不少问题,在之后将陆续整理出来,以便以后查看。 之前开发环境:VS2008,ArcGIS9.3,Ar
- pymongo.errors.CursorNotFound: Cursor not found, cursor id: 124891571478
- 关于电脑安装多个版本JDK后使用时的切换
- Eclipse 在Android 7.0的手机上调试无法输出logcat解决方案
- POJ 1916 Rat Attack 笔记
- mfc activeX 接口为默认参数(可选)的设置----VARIANT:DISPATCH、VT_DISPATCH类型的取值
- 【剑指offer】面试题19:二叉树的镜像
- 开始记录自己学到的东西
- 数字图像处理(一)
- 高性能Mysql主从架构的复制原理及配置详解
- tengine安装及配置
- adb操作命令详解及大全
- git学习笔记
- [P1026]统计单词个数