3140|4

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

evc4.0的ocx转vs2008的问题 [复制链接]

以前有个evc4.0创建的ocx控件  该控件有个属性readonlyproperty 被设定为只读属性:
DISP_PROPERTY_EX(CControlInvokeSetNotSupportedCtrl, "readonlyproperty", Getreadonlyproperty,  SetNotSupported, VT_R8)
在调用该控件时,使用如下方法:
         CWnd   *pCalander=GetDlgItem(IDC_CONTROLINVOKESETNOTSUPPORTEDCECTRL1);
    IDispatch   *pDisp;   
    LPUNKNOWN   lpUnknown=(pCalander->GetControlUnknown());   
    HRESULT hr = lpUnknown->QueryInterface(IID_IDispatch,(LPVOID   *)   &pDisp);   
        CComDispatchDriver        m_pIDispatch( pDisp );
        VARIANT tVar;
        tVar.vt = VT_R8;
        tVar.dblVal = 10;
        DISPID PropID;
        hr = m_pIDispatch.GetIDOfName( L"readonlyproperty",&PropID );
   
        hr = m_pIDispatch.PutProperty(PropID, &tVar);
将该控件转换成vs2008,转换方法为:
创建同名vs2008工程,采用MFC Smart Device Control,创建工程后删除除了stdfx.h的所有其他头文件,除了.rc2外所有的资源文件,除了stdafx.cpp之外所有的cpp,idl,def文件,然后将evc工程下的对应文件拷贝到vs2008工程目录下,将文件添加到工程中,设定Use MFC in share DLL,生成ocx。

现在问题是,vs2008转换后的ocx使用上述方法调用m_pIDispatch.PutProperty时会出现异常,而如果使用vs2008创建相同的ocx却不会出现异常问题

最新回复

自己解决了 将DISP_PROPERTY_EX(CControlInvokeSetNotSupportedCtrl, "readonlyproperty", Getreadonlyproperty,  SetNotSupported, VT_R8) 从DISP_FUNCTION_ID前面拿到 后面就解决了! DISP_FUNCTION_ID 和 DISP_PROPERTY_EX 有先后顺序马?  我觉得这应该是微软的一个bug  详情 回复 发表于 2009-10-20 16:41
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
VS2008与EVC4.0所使用的MFC库的名称发生了变化,如果使用动态链接,就必须将EVC4.0和VS2008所用到的MFC动态库全部集成到系统中,否则就会引起调用失败。
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
引用 1 楼 91program 的回复:
VS2008与EVC4.0所使用的MFC库的名称发生了变化,如果使用动态链接,就必须将EVC4.0和VS2008所用到的MFC动态库全部集成到系统中,否则就会引起调用失败。

没有使用动态连接
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
1, 可能跟SDK有关,因为VS08默认自带一些SDK版本,而EVC,是人工安装的SDK,相对应里面有些lib 存在互不兼容的问题,
2, 老美写的编译器就是这样独特,呵
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

5
 
自己解决了 将DISP_PROPERTY_EX(CControlInvokeSetNotSupportedCtrl, "readonlyproperty", Getreadonlyproperty,  SetNotSupported, VT_R8) 从DISP_FUNCTION_ID前面拿到 后面就解决了!

DISP_FUNCTION_ID 和 DISP_PROPERTY_EX 有先后顺序马?  我觉得这应该是微软的一个bug
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表