首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复UxTheme中的延迟声明

如何修复UxTheme中的延迟声明
EN

Stack Overflow用户
提问于 2011-08-23 19:51:50
回答 1查看 1K关注 0票数 2

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

代码语言:javascript
复制
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;

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

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

代码语言:javascript
复制
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声明为非延迟的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-23 21:26:04

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

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

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

我建议您联系DevExpress,他们很可能已经在其最新版本中获得了修复。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7160599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档