这是今年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控件相关推荐

  1. vc2010下调用miniblink控件实现浏览器简单实例

    vc2010下调用miniblink控件实现浏览器简单实例 上篇文章对vc6下实现miniblink控件实现浏览器简单实例进行了说明,现在针对vc2010下实现例子进行说明. Miniblink只有一 ...

  2. VC6环境下使用图形控件NTGraph的方法和步骤

    VC6环境下使用图形控件NTGraph的方法和步骤 源出处:http://www.codeproject.com/KB/miscctrl/ntgraph_activex.aspx 先看看NTGraph ...

  3. android google 下拉刷新 csdn,android SwipeRefreshLayout google官方下拉刷新控件

    下拉刷新功能之前一直使用的是XlistView很方便我前面的博客有介绍 SwipeRefreshLayout是google官方推出的下拉刷新控件使用方法也比较简单 今天就来使用下SwipeRefres ...

  4. Android SwipeRefreshLayout 官方下拉刷新控件介绍

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24521483 下面App基本都有下拉刷新的功能,以前基本都使用XListView ...

  5. android 下拉刷新 组件,android系统自带下拉刷新控件的实现

    android系统自带的下拉刷新控件SwipeRefreshLayout位于android.support.v4.widget包下,实现步骤如下: 1.在布局文件中添加该控件,该控件一般作为父控件,而 ...

  6. DevExpress的下拉框控件ComboxBoxEdit怎样绑定键值对选项

    场景 DevExpress的下拉框控件ComboBoxEdit控件的使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1028 ...

  7. DevExpress的下拉框控件ComboBoxEdit控件的使用

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  8. DevExpress的下拉框控件LookUpEdit的使用、添加item选项值、修改默认显示值

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  9. JavaScript--在页面的下拉框控件中遍历出日期--先天下能力工场

    在单独的javascript文件中建立如下代码,然后在jsp或者html页面中引用该文件,即可实现自动遍历生成option下拉框控件 function pageInit() { makeYear(); ...

最新文章

  1. Python 获取list 中指定元素出现的次数
  2. R语言grafify包简单、快速绘制19个漂亮的统计图实战
  3. adb连接夜神模拟器
  4. mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析
  5. tomcat 目录结构 web 目录结构
  6. svn clean up 出错解决方案
  7. mie散射理论方程_A. Mie米散射理论基础
  8. vscode中控制台不能输入_vscode调试时如何在控制台输入
  9. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_4_File类的构造方法...
  10. DBeaver mysql驱动连接问题
  11. linux下tomcat8安装详解(附图解步骤)
  12. linux 端口转发 udp,Linux Socat TCP/UDP端口转发及使用
  13. 金仓数据库KingbaseES中 数据库实例命令
  14. 服务器怎么改成gpt分区支持,硬盘mbr分区更改成gpt分区的方法
  15. python音乐编程_可以编程写音乐的python库musicpy教程(第一期) musicpy的数据结构...
  16. linux怎么查看终端号,怎么查看linux 图形终端设备号
  17. vue 移动端进入页面自动弹出软键盘
  18. HNU--计算机网络实验2
  19. (转)帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
  20. 【架构师】零基础到精通——网关详解

热门文章

  1. React开发(202):react代码分割之import导入导出
  2. Taro+react开发(60) 第三方icon使用
  3. 前端学习(3067):vue+element今日头条管理-频道筛选完成
  4. 前端学习(3002):vue+element今日头条管理--模块介绍
  5. [css] 举例说明微信端兼容问题有哪些?
  6. [css] 外边距重叠是什么?重叠的结果是什么?怎么防止外边距重叠?
  7. 前端学习(171):注释元素
  8. 前端学习(14):相对路径和绝对路径
  9. JS之获取指定位置Unicode的charCodeAt()方法
  10. MYSQL中什么是规范化_如何规范化SQL数据库