AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1434417
Accepted
Pate
Pate
Asked: 2019-05-09 04:46:32 +0800 CST2019-05-09 04:46:32 +0800 CST 2019-05-09 04:46:32 +0800 CST

为什么 Win16 应用程序布局在 Win10 32 位下表现异常?

  • 772

我有一个旧的 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 更新后正确运行”。

windows-10 compatibility
  • 1 1 个回答
  • 200 Views

1 个回答

  • Voted
  1. Best Answer
    Pate
    2019-06-07T02:54:15+08:002019-06-07T02:54:15+08:00

    我没有找到解决布局问题的方法,但幸运的是能够解决它。

    在研究期间的某个时候,我发现人们在 2017 Windows 10 Creators Update(版本 1703)之后遇到了 GDI 渲染应用程序的问题。字体渲染性能在某些方面受到影响,人们也有其他问题。进一步的研究表明,在 1703 版本中,微软对控制应用程序如何绘制到屏幕的桌面窗口管理器 (DWM) 进行了一些重大更改。使用 DWM,应用程序将它们的内容绘制到每个应用程序的单独内存缓冲区中,例如用于在现代 Windows 应用程序中显示实时工具栏缩略图。旧的方法是让应用程序直接绘制到屏幕缓冲区中。更新 1703 使得无法为任何应用程序禁用 DWM,并弃用了用于为每个应用程序单独控制它的 API 部分。

    我使用 Windows 10 周年更新(版本 1607)测试了有问题的应用程序,它成功了!令人毛骨悚然的布局问题消失了,应用程序运行起来非常棒。当然,问题在于 Windows 10 1607 版的支持窗口甚至比最新版本的 Windows 7 更短。幸运的是,微软为其 Windows 企业版提供了使用长期支持分支的选项,这些分支反映了“正常”于同年发布。我使用 Windows 10 企业版 2016 LTSB 版本进行了测试,该版本已将支持延长至 2026 年 – 该应用程序运行良好!

    案件暂时结案。

    • 0

相关问题

  • VMware Workstation USB 仲裁服务无法自动启动

  • 如何在域和 Linux 活动目录中启用指纹传感器

  • 资源管理器侧面板中的桌面外壳快捷方式

  • 为什么我不能将文件从 Android 发送到 Windows 10?

  • 在多个文件上打开方式?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve