ActiveX添加测试工程, 出现的问题[非选择性参数][找不到成员]
ActiveX 添加测试工程
1.新建工程MFC application,
2.添加完毕,在main Dialog中, 右键[Insert Activex Control],选择你的ActiveX控件。
3.选中你刚刚添加的控件,然后右键[add variable]
m_ocx就是控件的instance object,点击[完成],可以看到在XXXDlg.h中会添加这个instance object的定义。
ipcamerctrl1.h
ipcamerctrl1.cpp
就是你的控件,里面包含了控件中的所有方法,成员函数,Event等等, (在头文件中可以看到 InvokeHelper ()如何调用的 )
{
InvokeHelper(0x1, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
//==============================
接下来是关键了, 有时候,我们自己修改控件中的interface,
但是*.h *.cpp *.odl(vs2010是*.idl) 中interface没有匹配,比如*.h 中 修改了,funcA(int, int); 而*.odl 为funcA(int), 就容易造成错误。一般也无法编译。
但是除了interface不匹配,还有其他的问题, 就是上文所说的生成 ipcamerctrl1.h 的问题
*.odl
*.cpp
// Dispatch map
BEGIN_DISPATCH_MAP(CIPCamVideoCtrl, COleControl)
END_DISPATCH_MAP()
*.h
public:
enum {
//{{AFX_DISP_ID(CIPCamVideoCtrl)
dispidFuncA = 1L,
dispidFuncB = 2L,
.............
}
这里不得不说经常修改控件的时候,容易遗漏,但是当时编译器没有报错,怎么办呢?
出错情况
后来查证(*.h 定义接口的enum中有2个已经删除的func1(),func2() 导致的)
非常折磨人。 如何规避这种情况呢?
答案就是
改完之后,定义的形参 会多出一个选项 dispid,
添加这个dispid后,外部测试工程中接口用的就是enum的值
如果有删除修改的错误,编译时也会及时报出来
http://bbs.csdn.net/topics/310061638
里面应该不是 AboutBox()的问题,而是某个dispid 顺序出现错误。
所以我锁定问题的时候,才会想起尝试 确定dispid值。来排除[非选择性参数]的问题。(一切都是自己尝试出来的)
另说明一下,vs2010 通过添加接口,已经全部用 DISP_FUNCTION_ID 格式,
而vc6.0 则是DISP_FUNCTION格式(不加 _ID)。
写下这个只是给自己mark一下,顺便BS下MS,出现这种错误,没有文档,很难找原因。
===============
另vc6.0创建的ActiveX控件, 通过vs2010 添加测试工程,[Insert Activex Control]后, vs2010 Crash T_T
(但是我VS2010创建的ActiveX控件,用VS2010 添加测试工程则没有问题)
VS2005则正常,时间原因暂且不管,可能也因为VC6.0、VS2010里面各种设置导致的。
有人知道,可以告诉我下原因
ActiveX添加测试工程, 出现的问题[非选择性参数][找不到成员]的更多相关文章
- ARC简介以及工程中ARC与非ARC的混合
Piosa 博客园 博问 闪存 首页 新随笔 联系 管理 订阅 随笔- 79 文章- 0 评论- 13 ARC简介以及工程中ARC与非ARC的混合 ARC与非ARC在一个项目中同时使用, ...
- 测试工程中引入Masonry记录
测试工程中需要引入Masonry,在进行添加新库时发现了几个问题,记录如下,方便有相同问题的朋友查找解决: 1,podfile中添加 pod ‘Masonry’ 后,pod install --v ...
- AC6102 DDR2测试工程
AC6102 DDR2测试工程 本文档介绍AC6102上DDR2存储器基于Verilog代码的测试过程.AC6102上使用了2片16bit的DDR2存储器组成了32bit的硬件总线.虽然是32bit硬 ...
- Android中使用自身携带的Junit新建一个测试工程
1.新建立一个Android工程 package com.shellway.junit; public class Service { public int divide(int a,int b){ ...
- UiAutomator 测试工程开发小结
一. 关于bundle无法导入中文参数 答: 将文件改为UTF-8格式 二. 关于对无法抓取的控件进行快速输入问题 答: 主要通过pressKeyCode方法,首先将光标锁定在 ...
- JSBinding + SharpKit / 安装SharpKit以及添加SharpKit工程
本文说明如何往 sln 中添加 SharpKit 工程,以及配置. SharpKit 工程用于将 C# 源代码编译成 JS 代码. QQ群 189738580 1. 安装SharpKit 到 sha ...
- Mantis Administrator控制密码、注册不用邮件验证、添加测试员[Z]
Mantis默认安装完成后,管理员创建用户,但无法设置用户密码,只有通过邮件由用户自行修改.无法适应某些没有统一邮箱的情况,现将关闭邮箱验证方法和管理员设置用户密码方法验证通过 不用邮件验证: c ...
- RadASM的测试工程!
RadASM已经安装完毕了,是否可以正常工作了呢?我们通过创建一个工程来测试一下,下面就是创建这个测试工程的过程: 1, 2, 3, 4, 5, 6, 7, 8, 9, 至此,我们通过RadASM的模 ...
- robotium 测试APK<一> 建立测试工程
1.准备Android开发环境 2.准备签名工具http://www.troido.de/re-sign.jar 1.建立测试工程 打开Eclipse,点击File->New一个Android ...
随机推荐
- day20 在php中通过php语句操作数据库
第一步:连接数据库服务器 mysql_connect("数据库服务器地址","用户名","密码") 第二步:设定跟数据库打交道的网页的编码 ...
- [CSS]white-space 属性详解
实例 规定段落中的文本不进行换行: p { white-space: nowrap } 可能的值 值 描述 normal 默认.空白会被浏览器忽略. pre 空白会被浏览器保留.其行为方式类似 HTM ...
- sed线上经典案例之-同时替换多个字符串
回答网友请教的一个问题:配置文件如下:[aaa]cfg1=aaaxxxx=bbbcfg2=ccccfg3=ddd[bbb]cfg1=eeeyyyy=fffcfg2=gggcfg3=hhhcfg4=ii ...
- 对于python WSGI的理解
首先看看WSGI的目的是什么? 是用来定义一个统一的接口. 这个接口是针对Web服务器和python Web应用之间的. 以增加Python web应用在不同Web 服务器之间的可移植性. 也就是说如 ...
- SSH搭建完美CURD,含分页算法
今日开始研究使用java平台上的框架解决web服务端的开发. 这是一个完整的SSH实例,在马士兵老师的SSH整合代码基础上,增加用户的增删改查,同时实现structs方式的分页 放出源代码供大家学习参 ...
- Swagger+AutoRest
Swagger+AutoRest 生成web api客户端(.Net) 简介 对于.net来说,用web api来构建服务是一个不错的选择,都是http请求,调用简单,但是如果真的要在程序中调用, ...
- Android Learning:微信第三方登录
这两天,解决了微信第三方授权登录的问题,作为一个新手,想想也是一把辛酸泪.我想着,就把我的遇到的坑给大家分享一下,避免新手遇到我这样的问题能够顺利避开. 步骤一 微信开发者平台 我开始的解决思路是,去 ...
- CSS3学习之 transform 属性
CSS3 transform是什么? transform的含义是:改变,使…变形:转换 CSS3 transform都有哪些常用属性? transform的属性包括:rotate() / skew() ...
- 纯CSS3代码实现表格奇偶行异色,鼠标悬浮变色
1.首先会用到<tr></tr>元素两个伪类,nth-child()和hover. 然后需要注意的是伪类都是通过冒号引用的,不是点号,即tr:hover{} 其次,CSS代码中 ...
- 百度:在O(1)空间复杂度范围内对一个数组中前后连段有序数组进行归并排序
一.题目理解 题目:数组al[0,mid-1]和al[mid,num-1]是各自有序的,对数组al[0,num-1]的两个子有序段进行merge,得到al[0,num-1]整体有序.要求空间复杂度为O ...