Ive*_*aev 2 delphi function loading delay uxtheme
在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;
Run Code Online (Sandbox Code Playgroud)
我的带有SP3的Windows XP Professional在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'.
Run Code Online (Sandbox Code Playgroud)
JVCL也遇到了这个问题,但根据http://andy.jgknet.de/blog/2009/09/once-upon-a-delayed-jvcl-time/解决了这个问题.
我需要修复UxTheme,因为它们也被DevExpress组件使用.
有没有办法修补/修复UxTheme.pas DrawThemeTextEx声明没有延迟?
根本问题是这个API是在Vista中引入的,在XP中不可用.
延迟关键字的重点是允许想要利用更新API函数的开发人员轻松使用这样的函数.但要做到这一点,开发人员通常还必须为较旧的OS版本提供回退实现,DevExpress似乎没有做到.
因此,该错误不在UxTheme.pas中,而是在调用未在平台上实现的API的DevExpress组件中.修复是重新使用DevExpress代码以避免在XP上调用此API.
我建议你联系DevExpress,他们很可能已经修复了他们的最新版本.