我有一个旧的 C Win16 应用程序,在 Windows 10 32 位中运行时表现不佳。不幸的是,我没有应用程序的源代码,所以我无法从那里调试问题。该应用程序在 Windows 7 中正常运行,但在 Windows 10 中,它通过使用 NTVDM 启动,但由于某种原因,GUI 存在以下问题:
问题 1. 应用程序在启动时打开一个弹出对话框。鼠标交互有效,因此我可以在应用程序窗口周围拖动弹出对话框,但弹出窗口本身没有焦点,我无法单击任何按钮或向对话框输入文本。当弹出窗口打开时,我仍然可以使用 Alt+F 访问顶部应用程序栏中的文件菜单。
问题 2. 应用程序也可以配置为在没有弹出窗口的情况下打开。在这种情况下,顶部菜单栏和状态栏显示不当,并且不响应键盘的任何输入。
在这两种情况下,单击主应用程序窗口按钮都没有任何作用,我需要使用任务管理器来终止 ntvdm.exe 以关闭应用程序。
到目前为止,我已经尝试了不同的兼容模式设置以及尝试使用替代 VDM (WineVDM) 运行应用程序。兼容模式不执行任何操作,应用程序使用 WineVDM 启动,但具有与使用 NTVDM 相同的布局问题。这似乎表明问题不在 VDM 中,而更多地与 Win7 和 Win10 之间的遗留图形渲染差异有关。
接下来我应该尝试什么?有没有办法确定使用了哪个 GUI 框架?
编辑:我目前正在 64 位 Windows 10 机器内的虚拟机“Win10 32 位”中运行它,显示适配器目前是“Microsoft Hyper-V Video”。尝试将其更改为“Microsoft Basic Display Adapter”,但这没有帮助。
Edit2:在某个地方读到 Win10 创作者更新破坏了 GDI 应用程序,因此使用较早版本的 Windows (1607) 进行了测试。所以问题实际上变成了“我怎样才能让 GDI 应用程序在 creators 更新后正确运行”。