VC6下使用WebLink控件
这是今年6月7号我的一篇日志,好像还有些参考价值,誊到blog上来吧。
最终我在VC6下面搞定了WebLink,与以往一样,论坛和MSDN是我最大的帮手。在ESRI官方论坛那可怜的四五个关于VC6+WebLink的帖子中,我找到了困扰我多天的问题的答案。
在做现在这个影像数据服务项目的整个过程中,我一共在三个平台下面使用过WebLink控件,从VB6到.net,再回到VC6,所谓由俭入奢易,由奢入俭难,这次真的是体会到了。WebLink响应函数OnRequest的两个参数arguments和values分别是http请求字符串中的键名集合与键值集合,都是MoStrings类型的,但在VB6和.net中,它们都是以object示人,使用它们就像使用MoStrings一样。
然而到了VC6中,情况变了,VC无情的撕掉了object的外衣,赤裸裸的将COM的LPDISPATCH露给了我。本人看过一点《COM本质论》,对IUnkown、IDispatch等心存恐惧,因此看到这两个IDispatch *类型的参数arguments和values感到无从下手。
在MSDN和CSDN上苦苦寻觅之后,我发现应该使用arguments->GetIDsOfNames和arguments->Invoke来调用arguments的属性和方法。实验中也确实通过这种方法获得了Count属性的值。至此我以为问题解决了,但后面却发现,暂且不说GetIDsOfNames和Invoke那冗长得要分成若干行才能写完的参数(而且还不能全搞明白它们的含义),就是想调用arguments的一个Find方法,就复杂得让人吐血,如果再想使用运算符,比如[ ]索引,那就更恐怖了。本人技术拙劣,也不知道是不是COM组件在VC6下面都是这种用法。
于是思路就此中断,这次CSDN也没能再显神威。但ESRI的论坛上还是有点蛛丝马迹的,都是些上个世纪的帖子,其中就有我遇到的这个问题,solution如下:
通过添加MO而使MoStrings可用,而MoStrings中就有以LPDISPATCH为参数的构造函数。这样LPDISPATCH类型的arguments和values就可以顺理成章的转成MoStrings了,然后就可以像正常情况一样直接使用其一切属性和方法了。至此,才算是真正解决了这个问题。
COM虽已是过气的技术了,但它仍很重要,技术的发展都是循序渐进的。Don Box在《Essential .NET》中第一章就说“CLR is a better COM”,一针见血。
转载于:https://www.cnblogs.com/rib06/archive/2005/11/16/277309.html
VC6下使用WebLink控件相关推荐
- vc2010下调用miniblink控件实现浏览器简单实例
vc2010下调用miniblink控件实现浏览器简单实例 上篇文章对vc6下实现miniblink控件实现浏览器简单实例进行了说明,现在针对vc2010下实现例子进行说明. Miniblink只有一 ...
- VC6环境下使用图形控件NTGraph的方法和步骤
VC6环境下使用图形控件NTGraph的方法和步骤 源出处:http://www.codeproject.com/KB/miscctrl/ntgraph_activex.aspx 先看看NTGraph ...
- android google 下拉刷新 csdn,android SwipeRefreshLayout google官方下拉刷新控件
下拉刷新功能之前一直使用的是XlistView很方便我前面的博客有介绍 SwipeRefreshLayout是google官方推出的下拉刷新控件使用方法也比较简单 今天就来使用下SwipeRefres ...
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24521483 下面App基本都有下拉刷新的功能,以前基本都使用XListView ...
- android 下拉刷新 组件,android系统自带下拉刷新控件的实现
android系统自带的下拉刷新控件SwipeRefreshLayout位于android.support.v4.widget包下,实现步骤如下: 1.在布局文件中添加该控件,该控件一般作为父控件,而 ...
- DevExpress的下拉框控件ComboxBoxEdit怎样绑定键值对选项
场景 DevExpress的下拉框控件ComboBoxEdit控件的使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1028 ...
- DevExpress的下拉框控件ComboBoxEdit控件的使用
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
- DevExpress的下拉框控件LookUpEdit的使用、添加item选项值、修改默认显示值
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
- JavaScript--在页面的下拉框控件中遍历出日期--先天下能力工场
在单独的javascript文件中建立如下代码,然后在jsp或者html页面中引用该文件,即可实现自动遍历生成option下拉框控件 function pageInit() { makeYear(); ...
最新文章
- Python 获取list 中指定元素出现的次数
- R语言grafify包简单、快速绘制19个漂亮的统计图实战
- adb连接夜神模拟器
- mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析
- tomcat 目录结构 web 目录结构
- svn clean up 出错解决方案
- mie散射理论方程_A. Mie米散射理论基础
- vscode中控制台不能输入_vscode调试时如何在控制台输入
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_4_File类的构造方法...
- DBeaver mysql驱动连接问题
- linux下tomcat8安装详解(附图解步骤)
- linux 端口转发 udp,Linux Socat TCP/UDP端口转发及使用
- 金仓数据库KingbaseES中 数据库实例命令
- 服务器怎么改成gpt分区支持,硬盘mbr分区更改成gpt分区的方法
- python音乐编程_可以编程写音乐的python库musicpy教程(第一期) musicpy的数据结构...
- linux怎么查看终端号,怎么查看linux 图形终端设备号
- vue 移动端进入页面自动弹出软键盘
- HNU--计算机网络实验2
- (转)帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
- 【架构师】零基础到精通——网关详解
热门文章
- React开发(202):react代码分割之import导入导出
- Taro+react开发(60) 第三方icon使用
- 前端学习(3067):vue+element今日头条管理-频道筛选完成
- 前端学习(3002):vue+element今日头条管理--模块介绍
- [css] 举例说明微信端兼容问题有哪些?
- [css] 外边距重叠是什么?重叠的结果是什么?怎么防止外边距重叠?
- 前端学习(171):注释元素
- 前端学习(14):相对路径和绝对路径
- JS之获取指定位置Unicode的charCodeAt()方法
- MYSQL中什么是规范化_如何规范化SQL数据库