启用运行时主题时如何避免系统异常



我刚刚在Project Options中浏览了一些有趣的、启用了运行时主题的内容,当TDCTree(来自旧的Dream组件,类似于TTreeView)上显示提示时,鼠标移到另一个应该显示提示的节点上,我得到的是:

---------------------------
Debugger Fault Notification
---------------------------
Project DRIVE:pathtoprojectMyApp.exe faulted with message: 'system exception (code 0xc000041d) at 0x73c84cad'. Process Stopped. Use Step or Run to continue.
---------------------------
OK   
---------------------------

我相信IDE中也会出现同样的问题,每当我在设计时添加项目时试图将鼠标悬停在项目上时。

如果我在项目选项中禁用运行时主题,也不例外,但它显示了"老式XP提示"。

应用程序本身引发一个事件名为"APPCRASH"的异常。

看到了不少与"运行时主题"相关的问题,但没有看到任何方法可以在不禁用这些问题的情况下避免这些问题。

操作系统:Windows 7 x64

Delphi:2007年12月和2008年2月安装更新

更新1:

避免该问题的一种方法是:

Procedure TDCTreeToolTip.DoHideToolTip;
Begin
Inherited;
If FToolTipAdded Then
if FTreeNode <> NIL then // fix
DeleteToolTip(ToolTipID,FTreeNode.TreeView.Handle);
FToolTipAdded:=False;
FTreeNode:=Nil;
End;

单位为"dcntree.pas"。

在调用DoHideToolTip之前,FTreeNode似乎"不知何故"得到了NIL ed,因此"系统异常被引发……它仍然不能解释为什么只有当"运行时主题被启用"时

我现在没有时间对此进行进一步调查,但"导火索"已经找到,需要弄清楚"是谁"在拉它

至少目前,似乎只能使用以下变通方法:

Procedure TDCTreeToolTip.DoHideToolTip;
Begin
Inherited;
If FToolTipAdded Then
if FTreeNode <> NIL then // fix
DeleteToolTip(ToolTipID,FTreeNode.TreeView.Handle);
FToolTipAdded:=False;
FTreeNode:=Nil;
End;

单位为"dcntree.pas"。

最新更新