【发布时间】:2014-02-24 13:47:54
【问题描述】:
我提前为这个冗长的问题道歉......
我有一个用 VB6 编写的非常大的项目,我需要在一些 Windows 7 PC 上使用它。有许多带有数据网格的表格。其中三个数据网格存在缺陷,因为它们 (a) 在数据网格显示之前(桌面的部分或数据网格下方的应用程序的其他部分)有屏幕上的内容的残余,以及 (b) 单击、突出显示,并且滚动无法正常工作(选择一行不会取消选择另一行,以一种方式滚动不会让您向后滚动,以及其他错误)。
附加信息:
- 在WindowsXP和Win7 32位下,问题不出现;它只出现在 Win7 64 位上
- 如果在 Win7 64 位机器上安装了 vb6(是的,过程中有很多错误),问题就消失了
- 存在一些问题,即另一个网格的行被涂黑并且应用程序中的许多文本框非常暗且难以阅读(在 Win7 32 和 64 位上),但在这两种情况下都可以通过切换来纠正到 Windows 7 经典主题(aero off)
我尝试过的:
- 多次操纵
MsDatGrd.ocx。我从正常工作的 WinXP、Win7 32 位甚至原始 vb6 SP6 安装盘中复制了它。我尝试每次替换syswow64和system32文件夹中的 ocx 文件,在每个位置取消注册和重新注册。请注意,当我取消注册文件(system32和syswow64文件夹中的regsvr32.exe)并收到成功通知时,我仍然在注册表中找到它(regedit)。 - 我尝试创建一个新表单并将控件和代码复制到新表单中。
- 我尝试在记事本中删除对 ocx 的引用(其中显示
Object = "{CDE57A40-8B86-11D0-B3C6-00A0C90AEA82}#1.0#0"; "MSDatGrd.ocx")。在这种情况下,我什至没有收到错误,但网格仍然按预期工作。我唯一一次能够从操作 ocx 文件中得到任何响应是当我从 syswow64 中删除它时;那时,该应用程序将无法打开。
我认为表单本身可能是一个问题的原因是因为我遇到了来自两个表单的日志文件,其中包含损坏的数据网格(注意:每个表单上有 1 个数据网格)。我猜日志文件是在一次编译期间生成的。他们都说:
Could not create reference: '{CDE57A40-8B86-11D0-B3C6-00A0C90AEA82}#1.0#0'.
Could not create reference: '{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0'.
注意:每个文件中的第一个引用是msdatgrd.ocx,第二个是mscomctl.ocx(似乎没有任何问题)。
那么...还有什么其他人可以想到来帮助我解决这个问题吗?我更愿意解决问题,而不是使用其他方法,例如使用 mshflexgrid 或第 3 方网格等。
【问题讨论】:
标签: datagrid vb6 windows-7-x64 ocx