如何在delphi中禁用外部dll表单上的vcl样式

时间:2017-03-01 16:56:44

标签: delphi dll vcl-styles

我在使用VCL样式和外部DLL的Delphi 10.1 Berlin中遇到了问题。

我使用Nitgen DLL在我的应用程序中注册指纹。该过程由NBSPCOM.dll中的COM对象处理。

当我调用方法注册时,DLL中的表单显示为奇数。它显示表格背景,图像和控件是错误的等等。

如果我在XE8中编译应用程序,问题就会消失,一切正常。

我无法找到DLL表单的类来尝试VCL样式挂钩。

表单的一些屏幕截图:

原始表格

result

错误的表格

image

1 个答案:

答案 0 :(得分:0)

当您使用VCL Styles时,使用WH_CBT Hook设置原生winapi控件(Static,Button,RebarWindow32,...),我的猜测是dll使用{{1} }或static winapi控制绘制图像背景的位置。要解决此问题,您可以使用Button属性禁用这些控件的样式,如此

Vcl.Themes.TStyleManager.SystemHooks