在MFC中使用OCX控件遇到的一个问题
在一个简单的MFC对话框中嵌入一个OCX控件(如浏览器控件),该控件采用动态方式创建,即调用CWnd::Create()接口生成窗口,在本机运行良好,但是在其它部分机器上运行则出现程序异常,报告occsite.cpp的第161行出现错误。当把源程序放到目标机器上重新编译后程序可以正常运行。以下是示例代码:
m_pFlashPlayer = NULL; // 一个FLASH控件的对象指针
CRect rt;
GetClientRect(&rt); //获得区域大小
if (m_pFlashPlayer = new CShockwaveFlash) { // CShockwaveFlash由FLASH控件添加到PROJECT后 VC自动生成
if (m_pFlashPlayer->Create("PP", WS_VISIBLE , rt, this, 0)) { //创建窗口
m_pFlashPlayer->SetMovie(str);
m_pFlashPlayer->Play();
}
}
这个问题带来的后果是如果要发布该程序到100台机器上,则必须要在100台机器上重新编译一遍程序才能正确执行。
[分析:]
经过测试,发现:
1)该问题只存在于程序DEBUG版本中,在RELEASE版本中不存在该问题。
2)该问题和MFC有关,和所嵌入的控件本身没有任何关系。
经过深入分析,发现:该问题是由于开发机和目标机使用的MFCO42D.DLL库不匹配引起的。
[结果:]
经过确认,发现开发机和目标机的运行环境有如下差异:开发机未安装任何VS补丁,MFCO42D库的File Version为6.0.8168.0, Product Version为 6.0.000,而目标机安装了VS6.0 SP5,MFCO42D库的File Version为 6.0.8665.0, Product Version为 6.0.400。
[解决:]
为确保各编码及维护人员使用的MFCO42D.DLL一致,对MFCO42D.LIB和MFCO42D.DLL进行了统一(把.lib和.dll拷贝到程序的当前路径);同时将开发机上的MFCO42D.DLL和执行程序一起发布。
[疑问:]
为何MFCO42D的高版本没有保持向下兼容?是否接口有变?
在MFC中使用OCX控件遇到的一个问题相关推荐
- MFC中开发ocx控件,html容器收不到ocx的事件Event
问题背景: MFC开发ocx控件,主窗口就是ctrl类,主窗口类中调度接口和事件映射添加,执行OK,外部html容器中接收事件成功,如下: ctrl.h中声明事件映射函数 void EVTPENSIG ...
- MFC中动态创建控件以及事件响应实现方法
本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...
- MFC中动态创建控件以及添加事件响应
本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...
- C#中调用OCX控件
调用OCX控件的步骤: 1.在系统中注册该ocx控件,命令:regsvr32.exe 控件位置(加 /u 参数是取消注册) 2.在.net的工具箱中添加该控件,拖到form中去就可以了. 不用工具箱的 ...
- MFC中的edit控件
edit control 编辑框 static control 静态文本框控件 Button 按钮控件 第一步,在VS2019中新建一个MFC项目: 第二步,打开资源视图,双击打开窗口,在工具栏中选择 ...
- VS2010下ocx开发:(2)在C#程序中调用ocx控件
在本文中,给出一个C#示例程序,调用上一篇博文中创建的MultiplyDemo.ocx控件.注意需要保证该控件已经注册过. 启动Visual Studio 2010,使用C#创建一个Windows窗体 ...
- 怎样在Delphi2007中安装OCX控件
一.安装新的控件 1)首先,单击File▶New▶Package 创建一个控件包,然后保存这个工程(注意这一步很关键): 2)单击Component▶Import Component: 3)在弹出窗体 ...
- MFC中动态创建控件及添加消息响应的方法实例
动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框, ...
- VC/MFC中的CComboBox控件使用详解
CComboBox控件详解 CComboBox控件又称作组合框控件,其有三种形态可供选择,1.简单组合框(Simple)2.下拉组合框(Drop-down)3.下拉列表式组合框(Drop-down l ...
最新文章
- codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...
- 我的人生项目 -- 启动
- python编程前面需要一个空格怎么做_初学python,不明白代码之间时空格的用处
- 杀毒软件原理进阶阶段
- Boost:双图bimap与range范围的测试程序
- php网站不能访问,php怎么不登录不能访问
- 开源监控Prometheus二进制安装
- android 照片旋转并保存
- X协议 mysql_MySQL X协议分析
- 获取input添加图片的路径以及fakepath的解决方法
- 人脸识别系统的活体检测技术
- DDR MC DFI PHY
- Mr. Kitayuta vs. Bamboos
- 异地购房提取北京公积金说查不到贷款信息是怎么回事
- ISCC 2021 WP
- 基于C#的快递物流管理系统#毕业设计
- 【Linux】VIM使用
- 浏览器保存下载不带后缀的图片文件名命名规则
- helm create configmap error: ConfigMap in version “v1“ cannot be handled as a ConfigMap
- css背景图片的运用