gpt4 book ai didi

delphi - 如何修复 UxTheme 中的延迟声明

转载 作者:行者123 更新时间:2023-12-01 17:17:22 27 4
gpt4 key购买 nike

在Delphi XE UxTheme单元中有以下声明

function DrawThemeTextEx(hTheme: HTHEME; hdc: HDC; iPartId: Integer;  iStateId: Integer;
pszText: LPCWSTR; cchText: Integer; dwTextFlags: DWORD; pRect: PRect;
var pOptions: TDTTOpts): HResult; stdcall;
external themelib name 'DrawThemeTextEx' delayed;

我的 Windows XP Professional SP3 在 uxtheme.dll 中没有此类功能(使用 http://www.nirsoft.net/utils/dll_export_viewer.html 中的 dllexp.exe 检查)

我的应用程序似乎延迟了过程的加载,并且运行时失败并出现以下错误:

Project mtgstudio.exe raised exception class EExternalException 
with message 'External exception C0FB007F'.

JVCL 中也遇到了该问题,但按照 http://andy.jgknet.de/blog/2009/09/once-upon-a-delayed-jvcl-time/ 解决了该问题

我需要修复 UxTheme,因为 DevExpress 组件也使用它们。

有没有办法修补/修复 UxTheme.pas DrawThemeTextEx 声明以使其不延迟?

最佳答案

根本问题是这个API是在Vista中引入的,在XP中不可用。

delayed 关键字的全部目的是让想要利用更新的 API 函数的开发人员可以轻松地使用此类函数。但要做到这一点,开发人员通常还必须为旧操作系统版本提供后备实现,而 DevExpress 似乎未能做到这一点。

因此,该错误不在 UxTheme.pas 中,而是在调用未在平台上实现的 API 的 DevExpress 组件中。修复方法是重新编写 DevExpress 代码以避免在 XP 上调用此 API。

我建议您联系 DevExpress,他们很可能已经在最新版本中修复了这个问题。

关于delphi - 如何修复 UxTheme 中的延迟声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7160599/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com