我遇到了Delphi VCL样式的奇怪行为。启用VCL样式后,当madExcept激活“缓冲区溢出时立即崩溃”选项时,菜单将变为非样式。
关闭此选项,或将其切换为“立即崩溃缓冲区UNDERrun”会修复菜单问题。
问题是:是否还有其他人遇到此问题?为什么会发生以及如何解决?
答案 0 :(得分:4)
此问题是由对GetClassName
WinAPI函数的内部调用引起的。我刚刚测试并上传了一个修复程序。因此,您可以从VCL Styles Utils下载repository项目的最新版本,然后将单位Vcl.Styles.Utils.Menus
,Vcl.Styles.Utils.SysControls
和Vcl.Styles.Utils.SysStyleHook
添加到您的项目中,最后发表评论或删除Vcl.Styles.Utils.Menus单元中的第(27)行{$UNDEF UseVCLStyleUtilsMenu}
。
答案 1 :(得分:0)
这似乎向我表明VCL样式代码有缓冲区溢出。 madExcept内存管理器成功地使缓冲区溢出显示为异常。反过来,样式代码通过禁用样式来响应。
下一步操作是在调试器下运行代码,启用调试DCU,以便您可以调试VCL代码。希望调试器将捕获异常,然后突出显示缓冲区溢出。
如果您成功识别问题,可以制定解决方法并向QC提交错误报告。