我正在使用 Delphi XE6 和 VCL 样式。我有主要的应用程序和 dll。我的主应用程序启用了运行时主题,我正在使用 vcl 样式文件。我对我的 DLL 做了非常相似的事情。我启用了运行时主题并在使用和资源文件下添加了 VCL.Themes、VCL.Styles,其中包含 VCL 样式文件。加载 DLL 时,我从资源中加载 VCL 样式并将其设置为 DLL gui。主应用程序和 DLL 不是使用运行时包构建的。
现在我有自己风格的主应用程序 GUI 和自己风格的 DLL gui。这似乎工作正常,直到......
当我单击主应用程序中的按钮时,哪个事件会打开 TPopupMenu,它的样式与 DLL GUI 相同,而不是主应用程序样式。如果我浏览菜单,我也会得到 AV 并且程序崩溃。看一下附加的图像。
我究竟做错了什么?我目前看到的唯一解决方法是制作我自己的自定义 TPopupMenu 从其他一些控件派生。
正如我所承诺的,我准备了与我的应用程序类似的简单演示程序。它由具有自己样式的宿主应用程序和添加到资源的样式的 DLL 组成。运行它并单击按钮 Popup 然后尝试从弹出窗口中选择一些东西。它会在某些 StdWindowProc 或类似的东西中崩溃并停止。此外,如果您在尝试从该菜单中选择某些内容时转到窗口系统菜单(左上角),您会注意到系统菜单的样式为 DLL gui 并且也会崩溃。rar 文件链接:dropbox.com/sh/f2jmbsmw18akpyg/AAA6SWdBmVhf6n6K-mvYLLmua?dl=0
谢谢你的帮助。