【Delphi】VCL 使用TCoolBar控件,在系统触发UAC界面时,引发CMSysFontChanged事件导致界面卡死或弹出System Error 1400错误

在几个月前发现该问题,程序设置MainForm不可见,启动后使用ShellExecuteEx以管理员权限启动另外一个EXE。

在弹出系统UAC界面后,弹出System Error 1400错误,RAD10.2上未弹出错误,但在接下来的几秒钟程序占用CPU非常高, 

XE7编译的程序一旦出现错误,会导致delphi IDE窗口都被隐藏了,需要结束进程重新打开,调试状态下IDE弹出如下错误,和编译好的EXE弹出错误一致。

原因是由于IDE的MainForm设计窗口也打开了带有Tcoolbar控件的窗口,只要将该窗口关闭,则IDE不会报错,但包含该MainForm的EXE仍会出错,且会导致IDE被隐藏。

从客观上讲,报错流程如下,

1)运行XE7编译出来的程序(包含CoolBar控件,以及其他ToolBar,menu,button等)->

2)系统弹出UAC窗口(手动右键以管理员权限运行任意一个EXE都可以)

3)XE7和RAD10.2的IDE被隐藏(手动操作无法恢复窗口)

4)程序出现System Error 1400错误

5)打开包含相同控件窗口的XE7 IDE也会弹出System Error 1400错误

综上可以猜测,在错误发生过程中,系统弹出UAC时,会广播一些消息,而XE7程序和IDE(VCL内部控件)在处理消息过程中出现异常,并导致将程序所在窗口关闭。

通过错误日志可以看出在这过程中系统触发CMSysFontChanged消息事件,最终导致出错,而System Error 1400错误一般是在非UI线程操作UI控件导致的,

MSDN对WM_FONTCHANGE的说明也是指出该消息为顶层窗口广播消息。

经过测试,将coolbar替换成controlbar可以解决触发消息卡死问题。

另外,关于System Error 1400错误,经测试发现,是由于上面所说几个控件所在窗口仅创建但不显示时才会报错,而窗口显示则仅表现为界面卡死几秒钟(表现为程序界面快速刷新各个控件),因此替换为Controlbar可以解决卡死问题,但不能解决报错问题(测试发现简单的controlbar不会报错,但由于开发中一旦使用coolbar和controlbar,通常还会使用toolbar,假如在toolbar中再使用edit控件或combobox等,则同样会报错)。

本人最终是改变程序的设计,在不需要显示控件所在的窗口时,不创建该窗口,在需要显示时才创建,这样可以避免不显示窗口时报错,同时又解决显示窗口后卡死的问题。

附上IDE错误窗口和信息:

[5009EC9A]{rtl210.bpl  } System.SysUtils.RaiseLastOSError (Line 24533, "System.SysUtils.pas" + 6) + $2
[5009EC0F]{rtl210.bpl  } System.SysUtils.RaiseLastOSError (Line 24516, "System.SysUtils.pas" + 0) + $7
[505C6277]{vcl210.bpl  } Vcl.Controls.TWinControl.CreateWnd (Line 9391, "Vcl.Controls.pas" + 47) + $0
[50640BB2]{vcl210.bpl  } Vcl.ComCtrls.TToolBar.CreateWnd (Line 22126, "Vcl.ComCtrls.pas" + 1) + $2
[505C6766]{vcl210.bpl  } Vcl.Controls.TWinControl.CreateHandle (Line 9538, "Vcl.Controls.pas" + 3) + $4
[505C6A2C]{vcl210.bpl  } Vcl.Controls.TWinControl.UpdateShowing (Line 9661, "Vcl.Controls.pas" + 7) + $11
[505C6BD4]{vcl210.bpl  } Vcl.Controls.TWinControl.UpdateControlState (Line 9708, "Vcl.Controls.pas" + 21) + $3
[505C696B]{vcl210.bpl  } Vcl.Controls.TWinControl.CMRecreateWnd (Line 9642, "Vcl.Controls.pas" + 5) + $3
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[5005FDF3]{rtl210.bpl  } System.TMonitor.Exit (Line 17415, "System.pas" + 2) + $7
[50152E6E]{rtl210.bpl  } System.Classes.TInterfaceList.GetCount (Line 4843, "System.Classes.pas" + 5) + $9
[50066A9C]{rtl210.bpl  } System.@IntfClear (Line 36046, "System.pas" + 10) + $0
[520F0042]{vcldesigner210.bpl} VCLSurface.TVclDesignSurface.IsDesignMsg (Line 3586, "VCLSurface.pas" + 186) + $28
[5005F3E6]{rtl210.bpl  } System.@IsClass (Line 16131, "System.pas" + 1) + $8
[5005F5E3]{rtl210.bpl  } System.TObject.Dispatch (Line 16511, "System.pas" + 11) + $0
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[50060094]{rtl210.bpl  } System.TMonitor.TryEnter (Line 17596, "System.pas" + 10) + $0
[5005FC14]{rtl210.bpl  } System.TMonitor.Enter (Line 17289, "System.pas" + 4) + $2
[5005FA98]{rtl210.bpl  } System.TMonitor.CheckOwningThread (Line 17207, "System.pas" + 2) + $0
[5005FDA2]{rtl210.bpl  } System.TMonitor.Exit (Line 17393, "System.pas" + 1) + $2
[50644444]{vcl210.bpl  } Vcl.ComCtrls.TToolBar.WndProc (Line 24345, "Vcl.ComCtrls.pas" + 104) + $6
[50066A9C]{rtl210.bpl  } System.@IntfClear (Line 36046, "System.pas" + 10) + $0
[505C2850]{vcl210.bpl  } Vcl.Controls.TControl.Perform (Line 7010, "Vcl.Controls.pas" + 10) + $8
[505C6926]{vcl210.bpl  } Vcl.Controls.TWinControl.RecreateWnd (Line 9631, "Vcl.Controls.pas" + 0) + $12
[506435F0]{vcl210.bpl  } Vcl.ComCtrls.TToolBar.CMSysFontChanged (Line 23848, "Vcl.ComCtrls.pas" + 2) + $2
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[50060094]{rtl210.bpl  } System.TMonitor.TryEnter (Line 17596, "System.pas" + 10) + $0
[5005FC14]{rtl210.bpl  } System.TMonitor.Enter (Line 17289, "System.pas" + 4) + $2
[5070CE98]{vcl210.bpl  } Vcl.Forms.TCustomForm.WndProc (Line 4427, "Vcl.Forms.pas" + 206) + $5
[5005FA98]{rtl210.bpl  } System.TMonitor.CheckOwningThread (Line 17207, "System.pas" + 2) + $0
[5005FDA2]{rtl210.bpl  } System.TMonitor.Exit (Line 17393, "System.pas" + 1) + $2
[50644444]{vcl210.bpl  } Vcl.ComCtrls.TToolBar.WndProc (Line 24345, "Vcl.ComCtrls.pas" + 104) + $6
[50066A9C]{rtl210.bpl  } System.@IntfClear (Line 36046, "System.pas" + 10) + $0
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[50648721]{vcl210.bpl  } Vcl.ComCtrls.TCoolBar.CMSysFontChanged (Line 27037, "Vcl.ComCtrls.pas" + 1) + $2
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[520F0042]{vcldesigner210.bpl} VCLSurface.TVclDesignSurface.IsDesignMsg (Line 3586, "VCLSurface.pas" + 186) + $28
[5005F3E6]{rtl210.bpl  } System.@IsClass (Line 16131, "System.pas" + 1) + $8
[5005F5E3]{rtl210.bpl  } System.TObject.Dispatch (Line 16511, "System.pas" + 11) + $0
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[50060094]{rtl210.bpl  } System.TMonitor.TryEnter (Line 17596, "System.pas" + 10) + $0
[5005FC14]{rtl210.bpl  } System.TMonitor.Enter (Line 17289, "System.pas" + 4) + $2
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[5005FDF3]{rtl210.bpl  } System.TMonitor.Exit (Line 17415, "System.pas" + 2) + $7
[50152E6E]{rtl210.bpl  } System.Classes.TInterfaceList.GetCount (Line 4843, "System.Classes.pas" + 5) + $9
[50066A9C]{rtl210.bpl  } System.@IntfClear (Line 36046, "System.pas" + 10) + $0
[520F0042]{vcldesigner210.bpl} VCLSurface.TVclDesignSurface.IsDesignMsg (Line 3586, "VCLSurface.pas" + 186) + $28
[506485C0]{vcl210.bpl  } Vcl.ComCtrls.TCoolBar.WndProc (Line 26963, "Vcl.ComCtrls.pas" + 27) + $5
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C5EB5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9157, "Vcl.Controls.pas" + 1) + $3
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[5005F5E3]{rtl210.bpl  } System.TObject.Dispatch (Line 16511, "System.pas" + 11) + $0
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[5005F5E3]{rtl210.bpl  } System.TObject.Dispatch (Line 16511, "System.pas" + 11) + $0
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[50060094]{rtl210.bpl  } System.TMonitor.TryEnter (Line 17596, "System.pas" + 10) + $0
[5005FC14]{rtl210.bpl  } System.TMonitor.Enter (Line 17289, "System.pas" + 4) + $2
[5005FA98]{rtl210.bpl  } System.TMonitor.CheckOwningThread (Line 17207, "System.pas" + 2) + $0
[5005FDA2]{rtl210.bpl  } System.TMonitor.Exit (Line 17393, "System.pas" + 1) + $2
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[50066A9C]{rtl210.bpl  } System.@IntfClear (Line 36046, "System.pas" + 10) + $0
[520F0042]{vcldesigner210.bpl} VCLSurface.TVclDesignSurface.IsDesignMsg (Line 3586, "VCLSurface.pas" + 186) + $28
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[50172B18]{rtl210.bpl  } System.Classes.TObservers.IsObserving (Line 18590, "System.Classes.pas" + 11) + $20
[505C5E6D]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9129, "Vcl.Controls.pas" + 3) + $4
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[5005F5E3]{rtl210.bpl  } System.TObject.Dispatch (Line 16511, "System.pas" + 11) + $0
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[5005F5E3]{rtl210.bpl  } System.TObject.Dispatch (Line 16511, "System.pas" + 11) + $0
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[5005F5E3]{rtl210.bpl  } System.TObject.Dispatch (Line 16511, "System.pas" + 11) + $0
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[5070CE98]{vcl210.bpl  } Vcl.Forms.TCustomForm.WndProc (Line 4427, "Vcl.Forms.pas" + 206) + $5
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[50172B18]{rtl210.bpl  } System.Classes.TObservers.IsObserving (Line 18590, "System.Classes.pas" + 11) + $20
[520F870F]{vcldesigner210.bpl} VCLFormContainer.TControlSizer.ControlWndProc (Line 313, "VCLFormContainer.pas" + 33) + $C
[500636D0]{rtl210.bpl  } System.@FinalizeArray (Line 31435, "System.pas" + 139) + $0
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[500635C0]{rtl210.bpl  } System.@FinalizeRecord (Line 31136, "System.pas" + 25) + $0
[5005FB08]{rtl210.bpl  } System.TMonitor.Destroy (Line 17229, "System.pas" + 0) + $0
[5005F18B]{rtl210.bpl  } System.TObject.CleanupInstance (Line 15862, "System.pas" + 24) + $0
[50059C58]{rtl210.bpl  } System.@FreeMem (Line 4439, "System.pas" + 20) + $0
[5005F000]{rtl210.bpl  } System.TObject.FreeInstance (Line 15650, "System.pas" + 2) + $2
[5005F85A]{rtl210.bpl  } System.@ClassDestroy (Line 16993, "System.pas" + 0) + $2
[50151D10]{rtl210.bpl  } System.Classes.TList.Destroy (Line 4206, "System.Classes.pas" + 2) + $6
[5005F108]{rtl210.bpl  } System.TObject.Free (Line 15718, "System.pas" + 1) + $4
[505C588F]{vcl210.bpl  } Vcl.Controls.TWinControl.AlignControls (Line 8897, "Vcl.Controls.pas" + 50) + $8
[218B8EE1]{vclactnband210.bpl} Vcl.ActnMan.TCustomActionBar.AlignControls (Line 4410, "Vcl.ActnMan.pas" + 5) + $0
[505C5932]{vcl210.bpl  } Vcl.Controls.TWinControl.AlignControl (Line 8922, "Vcl.Controls.pas" + 9) + $A
[505C5E6D]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9129, "Vcl.Controls.pas" + 3) + $4
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[5070CE98]{vcl210.bpl  } Vcl.Forms.TCustomForm.WndProc (Line 4427, "Vcl.Forms.pas" + 206) + $5
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[520F9CBA]{vcldesigner210.bpl} VCLFormContainer.TFormContainerForm.WndProc (Line 801, "VCLFormContainer.pas" + 19) + $4
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[50644444]{vcl210.bpl  } Vcl.ComCtrls.TToolBar.WndProc (Line 24345, "Vcl.ComCtrls.pas" + 104) + $6
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[50644444]{vcl210.bpl  } Vcl.ComCtrls.TToolBar.WndProc (Line 24345, "Vcl.ComCtrls.pas" + 104) + $6
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[21192756]{designide210.bpl} EmbeddedFormDesigner.TEditorFormDesigner.WndProc (Line 317, "EmbeddedFormDesigner.pas" + 24) + $5
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[5070CE98]{vcl210.bpl  } Vcl.Forms.TCustomForm.WndProc (Line 4427, "Vcl.Forms.pas" + 206) + $5
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5EB5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9157, "Vcl.Controls.pas" + 1) + $3
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[50686F6A]{vcl210.bpl  } Vcl.ExtCtrls.TCustomButtonedEdit.DefaultHandler (Line 8703, "Vcl.ExtCtrls.pas" + 1) + $4
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C5EB5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9157, "Vcl.Controls.pas" + 1) + $3
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[5005FDF3]{rtl210.bpl  } System.TMonitor.Exit (Line 17415, "System.pas" + 2) + $7
[505A4B1F]{vcl210.bpl  } Vcl.Graphics.FreeMemoryContexts (Line 7051, "Vcl.Graphics.pas" + 12) + $8
[5005F5E3]{rtl210.bpl  } System.TObject.Dispatch (Line 16511, "System.pas" + 11) + $0
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[5017B134]{rtl210.bpl  } System.Classes.{System.Generics.Collections}TDictionary<System.Integer,System.Classes.IInterfaceList>.TryGetValue (Line 1974, "System.Generics.Collections.pas" + 6) + $2
[50172A9D]{rtl210.bpl  } System.Classes.TObservers.IsObserving (Line 18580, "System.Classes.pas" + 1) + $F
[50172B18]{rtl210.bpl  } System.Classes.TObservers.IsObserving (Line 18590, "System.Classes.pas" + 11) + $20
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505E7825]{vcl210.bpl  } Vcl.StdCtrls.TCustomComboBox.WndProc (Line 5000, "Vcl.StdCtrls.pas" + 28) + $1B
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505D0437]{vcl210.bpl  } Vcl.Controls.TDockTree.WndProc (Line 15585, "Vcl.Controls.pas" + 74) + $5
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[5059DE4B]{vcl210.bpl  } Vcl.Graphics.TResourceManager.AssignResource (Line 1962, "Vcl.Graphics.pas" + 17) + $D
[213960CC]{vclide210.bpl} IDEVirtualTrees.TBaseVirtualTree.WndProc (Line 23582, "IDEVirtualTrees.pas" + 32) + $4
[5070CE98]{vcl210.bpl  } Vcl.Forms.TCustomForm.WndProc (Line 4427, "Vcl.Forms.pas" + 206) + $5
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[5005F5E3]{rtl210.bpl  } System.TObject.Dispatch (Line 16511, "System.pas" + 11) + $0
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505942F9]{vcl210.bpl  } Winapi.Messages.SendTextMessage (Line 2147, "Winapi.Messages.pas" + 2) + $10
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[50686834]{vcl210.bpl  } Vcl.ExtCtrls.TEditButton.TGlyph.WndProc (Line 8416, "Vcl.ExtCtrls.pas" + 4) + $4
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[50644444]{vcl210.bpl  } Vcl.ComCtrls.TToolBar.WndProc (Line 24345, "Vcl.ComCtrls.pas" + 104) + $6
[506872AC]{vcl210.bpl  } Vcl.ExtCtrls.TCustomButtonedEdit.WndProc (Line 8830, "Vcl.ExtCtrls.pas" + 30) + $4
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[5070CE98]{vcl210.bpl  } Vcl.Forms.TCustomForm.WndProc (Line 4427, "Vcl.Forms.pas" + 206) + $5
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505D0437]{vcl210.bpl  } Vcl.Controls.TDockTree.WndProc (Line 15585, "Vcl.Controls.pas" + 74) + $5
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[5005F5E3]{rtl210.bpl  } System.TObject.Dispatch (Line 16511, "System.pas" + 11) + $0
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[5005F5E3]{rtl210.bpl  } System.TObject.Dispatch (Line 16511, "System.pas" + 11) + $0
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C5932]{vcl210.bpl  } Vcl.Controls.TWinControl.AlignControl (Line 8922, "Vcl.Controls.pas" + 9) + $A
[505C594F]{vcl210.bpl  } Vcl.Controls.TWinControl.AlignControl (Line 8925, "Vcl.Controls.pas" + 12) + $3
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505D0437]{vcl210.bpl  } Vcl.Controls.TDockTree.WndProc (Line 15585, "Vcl.Controls.pas" + 74) + $5
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[207BBE14]{coreide210.bpl} EditorForm.TEditWindow.CMSysFontChanged (Line 3801, "EditorForm.pas" + 0) + $8
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C6926]{vcl210.bpl  } Vcl.Controls.TWinControl.RecreateWnd (Line 9631, "Vcl.Controls.pas" + 0) + $12
[506435F0]{vcl210.bpl  } Vcl.ComCtrls.TToolBar.CMSysFontChanged (Line 23848, "Vcl.ComCtrls.pas" + 2) + $2
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[5070CE98]{vcl210.bpl  } Vcl.Forms.TCustomForm.WndProc (Line 4427, "Vcl.Forms.pas" + 206) + $5
[505C5E7E]{vcl210.bpl  } Vcl.Controls.TWinControl.GetControl (Line 9130, "Vcl.Controls.pas" + 4) + $A
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C5EB5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9157, "Vcl.Controls.pas" + 1) + $3
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[505D0437]{vcl210.bpl  } Vcl.Controls.TDockTree.WndProc (Line 15585, "Vcl.Controls.pas" + 74) + $5
[507951A3]{vcl210.bpl  } Vcl.CaptionedDockTree.TCaptionedDockTree.WndProc (Line 252, "Vcl.CaptionedDockTree.pas" + 23) + $2
[505CFCEF]{vcl210.bpl  } Vcl.Controls.TDockTree.WindowProc (Line 15329, "Vcl.Controls.pas" + 1) + $4
[505C5ED5]{vcl210.bpl  } Vcl.Controls.TWinControl.Broadcast (Line 9159, "Vcl.Controls.pas" + 3) + $11
[505C9B37]{vcl210.bpl  } Vcl.Controls.TWinControl.CMSysFontChanged (Line 11652, "Vcl.Controls.pas" + 2) + $4
[00424121]{bds.exe     } Sanctuary.Util..{System.Generics.Collections}TList<Sanctuary.Util.TPair<System.string,System.string>> + $A51
[505C2C15]{vcl210.bpl  } Vcl.Controls.TControl.WndProc (Line 7232, "Vcl.Controls.pas" + 91) + $6
[500677D3]{rtl210.bpl  } System.LocaleCharsFromUnicode (Line 38465, "System.pas" + 1) + $17
[50066DF9]{rtl210.bpl  } System.UnicodeToUtf8 (Line 37174, "System.pas" + 19) + $16
[500671D0]{rtl210.bpl  } System.UTF8EncodeToShortString (Line 37308, "System.pas" + 1) + $1D
[50059C58]{rtl210.bpl  } System.@FreeMem (Line 4439, "System.pas" + 20) + $0
[5006132C]{rtl210.bpl  } System.@UStrClr (Line 24117, "System.pas" + 14) + $0
[5059E493]{vcl210.bpl  } Vcl.Graphics.GetFontData (Line 2406, "Vcl.Graphics.pas" + 44) + $13
[505C76E2]{vcl210.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10038, "Vcl.Controls.pas" + 153) + $6
[5070CE98]{vcl210.bpl  } Vcl.Forms.TCustomForm.WndProc (Line 4427, "Vcl.Forms.pas" + 206) + $5
[5016C077]{rtl210.bpl  } System.Classes.TComponent.RemoveFreeNotification (Line 15437, "System.Classes.pas" + 2) + $4
[505C2850]{vcl210.bpl  } Vcl.Controls.TControl.Perform (Line 7010, "Vcl.Controls.pas" + 10) + $8
[50717212]{vcl210.bpl  } Vcl.Forms.TApplication.NotifyForms (Line 10981, "Vcl.Forms.pas" + 2) + $16
[50713573]{vcl210.bpl  } Vcl.Forms.TScreen.IconFontChanged (Line 8439, "Vcl.Forms.pas" + 1) + $D
[5059E013]{vcl210.bpl  } Vcl.Graphics.TGraphicsObject.Changed (Line 2278, "Vcl.Graphics.pas" + 1) + $E
[5059E541]{vcl210.bpl  } Vcl.Graphics.TFont.Changed (Line 2431, "Vcl.Graphics.pas" + 1) + $2
[5059DD8C]{vcl210.bpl  } Vcl.Graphics.TResourceManager.ChangeResource (Line 1897, "Vcl.Graphics.pas" + 11) + $4
[5059E66E]{vcl210.bpl  } Vcl.Graphics.TFont.SetData (Line 2498, "Vcl.Graphics.pas" + 3) + $A
[5059E921]{vcl210.bpl  } Vcl.Graphics.TFont.SetHandle (Line 2615, "Vcl.Graphics.pas" + 5) + $D
[507137A4]{vcl210.bpl  } Vcl.Forms.TScreen.GetMetricSettings (Line 8582, "Vcl.Forms.pas" + 11) + $11
[50064740]{rtl210.bpl  } System.DynArraySetLength (Line 33858, "System.pas" + 9) + $6
[50059C79]{rtl210.bpl  } System.@ReallocMem (Line 4513, "System.pas" + 21) + $0
[500628D0]{rtl210.bpl  } System.@UStrSetLength (Line 29156, "System.pas" + 27) + $0
[5009AAFF]{rtl210.bpl  } System.SysUtils.FixDateSeparator (Line 21069, "System.SysUtils.pas" + 2) + $2
[50059C58]{rtl210.bpl  } System.@FreeMem (Line 4439, "System.pas" + 20) + $0
[5006132C]{rtl210.bpl  } System.@UStrClr (Line 24117, "System.pas" + 14) + $0
[50099F53]{rtl210.bpl  } System.SysUtils.GetLocaleChar (Line 19950, "System.SysUtils.pas" + 1) + $9
[50059C58]{rtl210.bpl  } System.@FreeMem (Line 4439, "System.pas" + 20) + $0
[50061391]{rtl210.bpl  } System.@UStrArrayClr (Line 24268, "System.pas" + 16) + $0
[5009A24B]{rtl210.bpl  } System.SysUtils.TFormatSettings.Create (Line 20120, "System.SysUtils.pas" + 37) + $15
[50059C58]{rtl210.bpl  } System.@FreeMem (Line 4439, "System.pas" + 20) + $0
[5006172F]{rtl210.bpl  } System.@UStrAsg (Line 24905, "System.pas" + 42) + $0
[50063681]{rtl210.bpl  } System.@FinalizeArray (Line 31380, "System.pas" + 84) + $0
[500636AA]{rtl210.bpl  } System.@FinalizeArray (Line 31402, "System.pas" + 106) + $0
[50063678]{rtl210.bpl  } System.@FinalizeArray (Line 31376, "System.pas" + 80) + $0
[500635C0]{rtl210.bpl  } System.@FinalizeRecord (Line 31136, "System.pas" + 25) + $0
[5009D476]{rtl210.bpl  } System.SysUtils.GetFormatSettings (Line 23427, "System.SysUtils.pas" + 4) + $19
[50715178]{vcl210.bpl  } Vcl.Forms.TApplication.CheckIniChange (Line 9763, "Vcl.Forms.pas" + 11) + $5
[5071533A]{vcl210.bpl  } Vcl.Forms.TApplication.WndProc (Line 9828, "Vcl.Forms.pas" + 5) + $6
[210F232E]{designide210.bpl} DeskUtil.SetFocusHook (Line 463, "DeskUtil.pas" + 4) + $C
[5016E218]{rtl210.bpl  } System.Classes.StdWndProc (Line 16600, "System.Classes.pas" + 8) + $0
[218C456B]{vclactnband210.bpl} Vcl.ActnMenus.CallWindowHook (Line 748, "Vcl.ActnMenus.pas" + 20) + $F
[5071627C]{vcl210.bpl  } Vcl.Forms.TApplication.ProcessMessage (Line 10331, "Vcl.Forms.pas" + 2) + $9
[50716386]{vcl210.bpl  } Vcl.Forms.TApplication.ProcessMessages (Line 10374, "Vcl.Forms.pas" + 1) + $4
[2137C85B]{vclide210.bpl} IDEVirtualTrees.TVirtualTreeHintWindow.AnimationCallback (Line 6530, "IDEVirtualTrees.pas" + 10) + $7
[2138CA8C]{vclide210.bpl} IDEVirtualTrees.TBaseVirtualTree.Animate (Line 17400, "IDEVirtualTrees.pas" + 18) + $D
[2137D3E3]{vclide210.bpl} IDEVirtualTrees.TVirtualTreeHintWindow.ActivateHint (Line 6877, "IDEVirtualTrees.pas" + 56) + $1C
[505CD163]{vcl210.bpl  } Vcl.Controls.THintWindow.ActivateHintData (Line 13649, "Vcl.Controls.pas" + 1) + $5
[50717CBC]{vcl210.bpl  } Vcl.Forms.TApplication.ActivateHint (Line 11416, "Vcl.Forms.pas" + 69) + $14
[50717639]{vcl210.bpl  } Vcl.Forms.TApplication.HintTimerExpired (Line 11150, "Vcl.Forms.pas" + 8) + $4
[50713F86]{vcl210.bpl  } Vcl.Forms.HintTimerProc (Line 8841, "Vcl.Forms.pas" + 3) + $5
[5077728B]{vcl210.bpl  } Vcl.AppEvnts.TMultiCaster.GetAppEvents (Line 654, "Vcl.AppEvnts.pas" + 1) + $3
[5071635B]{vcl210.bpl  } Vcl.Forms.TApplication.ProcessMessage (Line 10352, "Vcl.Forms.pas" + 23) + $1
[5071639E]{vcl210.bpl  } Vcl.Forms.TApplication.HandleMessage (Line 10382, "Vcl.Forms.pas" + 1) + $4
[507166D1]{vcl210.bpl  } Vcl.Forms.TApplication.Run (Line 10520, "Vcl.Forms.pas" + 26) + $3

  

原文地址:https://www.cnblogs.com/caibirdy1985/p/9373104.html