下午好,大家好!
我当前有一个项目遇到一个相当令人烦恼的问题。 我正与我当前一个项目中的硬件库合作( NVAPI Pascal 头由 Andreas Hausladen 翻译为 Andreas Hausladen ) 。 这个 lib 允许我从一个 NVIDIA GPU 中检索信息。 我使用它来取回温度, 在 Firemonkey s < code> TanimateFloat 的帮助下, i m 在定制的拨号上调整角度以显示温度 。
由于FMX默认在视窗上直达2D,我可以用任何各种“gamer”工具(MSI Aforburner、FRAPS等)监测FPS。
im 问题在于,当我将系统引入睡眠模式( 暂停到 RAM/ S3), 然后再次启动时, 我应用程序上的界面被关闭( 部分或全部), UI 上的界面没有明显更新 。 我正定期调用 NVAPI 库的初始化, 并通过计时器检查结果, 但这并不解决问题 。 我还在父拨号上运行 < code > ProcessMessages code > 和 < code> repaint code >, 并且它控制着儿童( 因为似乎找不到窗体的 < code> repaint code > 或等效的窗体 )。
我尝试了各种版本的图书馆,每个版本都提出了同样的问题。 下一段表明,事实上这不是问题所在,而实际上是造物主的过错。
我有一个解决方案, 但我想要知道是否有更... 优雅的可用选项。 解决方案i 包括添加 FMX. Types. GlobaluseDirect2D: = False;
before Application. Intialization
in my projects 来源。 但是, 这迫使 FMX 使用 GDI+ 而不是 Direct2D。 它当然有效, 但是如果我能, i 喜欢将 D2D 保持开放。 我可以使用 < code> FindCmdLineSwitch 来在参数上切换开/, 但是这仍然需要我重新启动应用程序, 从 D2D 到 GDI+ 或反向更改 。
令人奇怪的是,FPS的柜台(来自FRAPS,我的情况)显示,UI仍有活动(如预期的数值变化),但UI本身并不明显令人耳目一新。
这个问题是否与直接二维相关, 还是与 Firemonkey 的安装有问题? 更重要的是, 是否有比禁用 D2D 更好的方法来修复它? 最后, 也与此相关, 能否在不先终止程序的情况下“ 重新启用” 应用程序( 因此也许我可以允许用户在 GDI+ 和 D2D 之间切换, 而不必重新启动应用程序 )?