一款老旧定制应用程序,使用VC6.0在WinXP平台开发,一直运行于WinXP SP1操作系统。

原来运行的计算机硬盘坏掉之后,更换了新计算机,安装了WinXP SP3,运行该定制程序发现程序主界面(模态对话框窗口)按键贴图与按键响应位置存在较大偏差,导致按键的点击操作与界面显示的按键(贴图)位置不一致,严重影响正常使用。

初步分析觉得,图片尺寸是不会变的,图片在显示贴图过程中的处理逻辑也不会改变,应该是对话框显示尺寸发生了变化,导致对应的按钮等操作控件位置随之发生变动,最终使得显示的按钮与对应的操作位置(按钮控件实际的显示位置)发生了错位。

调整系统界面字体和字号,错位量变化,但均达不到二者完全对应的程度。咨询一位资深大佬,大佬答复也应该是这个原因。反复调整无果。

考虑更换系统。应用程序与硬件相关的只有一个多串口卡,而且找到了多串口卡的Windows7 x86_64驱动(这个厂商值得表扬,各型号板卡各种平台各种版本的驱动官网上均提供了下载,它就是MOXA),重装系统为Windows7 x86_64 旗舰版,安装硬件驱动一次通过,运行应用程序,现象依旧。

准备从源代码下手修正这个偏差,幸而源代码在十多年后的今天竟然找到了,但需要安装老旧的Visual Studio 6,幸好手头存有一份(自我表扬一下),免除了网上百般down千般试的劳顿。

安装过程中提示VS6与Win7不兼容,一路忽略这种提示,直至安装完成。

将源代码另复制一份作为试验品(要给自己留足后悔药!!!)。

运行VS6,正常进入,打开应用程序的.dsw文件,编译,报错:

“...\..\... ... ...\AFXMEM.CPP 没有发现。”

以关键字“AFXMEM.CPP”问度娘,出现的只有关于 afxmem.obj 的答案。

以关键字“AFXMEM.H”问度娘,亦然。

看来AFXMEM基本不会出现问题。

灵机一动,是不是与编译环境设置中的路径参数相关?

菜单 -> Tools -> Options

弹出对话框,选择Directories标签,如下图,有路径设置(此图是修改路径后的)

路径显示为 C:\Program Files (x86) \...

想起来,VS6是32位程序,操作系统为64位Windows7,自动安装路径为C:\Program Files (x86) \下,

但估计 VS6 开发较早,其认为自己的安装路径为C:\Program Files\ 下,这里出现了差错。

关闭VS6,将VS6所在的整个文件夹从C:\Program Files (x86) \ 下剪切到C:\Program Files\ 下,

运行VS6,打开工程,将所有与 C:\Program Files (x86) \ 有关的路径参数都修改为 C:\Program Files\

具体见下图,红框内的4中类别都要检查修改:

打开应用程序工程,编译通过。

注:此时开始菜单中的VS6相关入口保存的仍是 C:\Program Files (x86) \ 路径下的快捷方式,虽然点击也可以运行,但显示不出程序图标,看着不爽,逐一右键,修改路径为新路径 C:\Program Files\,程序图标可以正常显示。

回头再看应用程序对话框资源相关设置,按钮贴图和实际响应位置错位的主对话框设定的字体为“幼圆”字号8,但当前系统中没有幼圆字体,更改为系统中已有的“宋体”,字号不变,重新编译运行,按钮贴图和响应位置一致。问题原因找到。

逐一检查所有的对话框,问题解决。

事件回顾 >>>>>>

基本情况:应用程序采用VC6开发,主界面为模态对话框,为了界面美观,采用贴图方式,进行美化。

该对话框选择了开发机上有的“幼圆”字体,并在此字体及所选择的字号下设定了对话框尺寸及所包含的按钮等控件的位置,以与设计的贴图保持位置上的对应。

隐含前提:如果系统不存在“幼圆”字体,系统会自动寻找最相近的字体进行替代。如果替代字体与原设定字体“幼圆”在相同字号下的大小有别,对话框会相应的自动调整尺寸,导致错位。

如果事先知道是缺少所需的字体导致的,只需在目标计算机上安装所需要的字体文件即可。

绕了一大圈,找到了原因,也算是个有益的体验。

身为码农,不得不慎重、不得不缜密,谁知道哪个地方有虫子在等着看码农的笑话呢 :)

VC6/VS6定制应用程序按键与贴图错位问题的排查及解决相关推荐

  1. iOS 9应用开发教程之定制应用程序图标以及真机测试

    iOS 9应用开发教程之定制应用程序图标以及真机测试 定制ios9应用程序图标 在图1.12中可以看到应用程序的图标是网状白色图像,它是iOS模拟器上的应用程序默认的图标.这个图标是可以进行改变的.以 ...

  2. asp.net程序涉及案例_定制小程序 | 企业在开发小程序前需要满足哪些条件?

    目前深圳小程序开发行业发展愈发迅速,小程序开发已成为目前的潮流趋势,制作属于自己的小程序刻不容缓.那么在开发小程序前,企业需要满足什么条件呢? 1.注册账号 万纵联小编告诉你,要想开发小程序,申请账号 ...

  3. 服饰贴图定制小程序V1.2.4安装更新一体包+小程序前端

    介绍: 江小白服饰贴图定制小程序是一个定制类型的商城. 基本上,所有跟图片相关的定制,都能用我们的程序,比如,手机壳,海报,抱枕,服装,照片书,照片冲洗,酒,等等,我们只是提供一个工具! 首先,所有营 ...

  4. Ⅴ0还有别的方法设置图案吗_定制汽车硅胶按键你知道厂家是怎么给汽车按键镭雕的吗...

    随着汽车硅胶按键的使用越来越广泛,很多时候我们在定制汽车硅胶按键上会发现,有些图案.字体没有刻痕,而且表面很光滑,想抠都抠不掉,还不会有磨损,用久之后还非常的美观!那问题就来了,那究竟是什么呢? 定制 ...

  5. 因为此网站使用了 hsts_长春定制小程序服务,网站设计市场价格

    成都御天程为您详细解读KUywim长春定制小程序服务的相关知识与详情,因为互联网的开展趋势,很多企业都从线下中心转移到.很多服务商都搭建了用来推广服务商业务和展现服务商实力,但是很多企业搭建好后却没有 ...

  6. VC6.0建立控制台程序实现PDA应用

    作者:iamlaosong 由于须要,又写起了文本界面的程序,以便PDA通过telnet连上运行. 假设是Linuxserver的话.这是非常easy的事,但是用户server是windows ser ...

  7. 使用VC6将32位程序编译成为64位程序(这个才是可行的)

    山上明月 使用VC6将32位程序编译成为64位程序 看了好多好多资料,自己也太过依赖现有的资料,按部就班不是真理不是真理!!! 主要内容是参照http://www.vckbase.com/docume ...

  8. python数据分析毕业论文切入点_软件定制|小程序定制|数据分析与处理|毕业设计|论文辅导|算法实现|项目开发|Java|C/C++|Python...

    1.工作室简介 软件定制.程序定做.数据分析与处理.项目开发.毕业设计与论文辅导.算法设计与实现等服务. 成立至今,我们累计服务过100多位成功客户案例,包括淘宝.电信.恒生.浙大某研究所等大型客户. ...

  9. 黑码定制小程序使用方法_男装攻略

    当我们打开微信,在微信上面的小程序搜索框输入:"黑码定制",就会出现黑码定制小程序. 黑码定制小程序是基于2000万亚洲人的体型特征数据, AI智能量体,完美的打造出你的专属衬衫. ...

最新文章

  1. python 是什么类型的语言-python到底是什么类型的语言
  2. 只能输入字母的c语言程序设计教程课后答案,c语言程序设计基础教程_习题答案20120319...
  3. No slave process to process jobs, aborting 报错!!!
  4. jdk注解_我们正在下注:这个注解很快就会出现在JDK中
  5. BestCoder Round #36 [B] Gunner
  6. 获取hdfs_收好!Hadoop-HDFS读写原理的超详细教程
  7. 中国水雾化铁粉行业市场供需与战略研究报告
  8. python函数装饰器详解_Python语言函数装饰器用法实例详解
  9. python xlwings下载_python xlwings excel报表自动化 系列文章精讲 (一)
  10. 合肥工业大学数据库上机实验1
  11. iOS Charles(青花瓷)安装
  12. python如何抓取图片数据_python 的简单抓取图片
  13. TypeScript介绍
  14. Adobe Photoshop CS5永久序列号
  15. 后台界面设计之表格设计规范参考
  16. 项目实战-----产品经理要做什么?
  17. 2399元起,华为nova7 SE助推国内5G手机走向普惠
  18. bat脚本中pause的作用
  19. 对比学习-SimSiam-论文精读解析
  20. python两张图合成一张_Python图像处理实现两幅图像合成一幅图像的方法【测试可用】...

热门文章

  1. 谷歌学术得到论文被引用信息
  2. NAT(地址转换模式)
  3. window磁盘id与序列号
  4. request.setattribute详解
  5. Configuring Add-on Service
  6. 贪心算法(Java)
  7. awk——awk基础介绍
  8. 编码算法(URL编码和Base64编码)
  9. 图片放上效果ImageHover.css
  10. 批处理 bat 改文件后缀名