【发布时间】:2016-01-25 01:45:26
【问题描述】:
我需要对 C++ Builder VCL 应用程序中的主菜单进行多次启用/禁用更改。
当应用程序更改状态时,我会循环禁用和启用多个菜单的可见性。
我遇到的这个问题是,在循环期间偶尔循环时,可见的菜单比屏幕上的菜单多,导致换行,然后导致主窗体上的所有内容调整大小,并重新调整大小导致缓慢和巨大的闪烁。
我已经尝试在主窗体上禁用和启用对齐,没有任何影响。
我已经在主窗体上完成了 WM_SETREDRAW 技巧,但是当它停止绘制时,之后调用 invalidate 并没有让一些子控件正确重绘。一个不会重绘的例子是 TPageControl 上的选项卡。
可能相关的另一点是,代码是从 TTabSheet::OnShow 回调中调用的。
理想情况下,我想找到一个 BeginUpdateMainMenu 和 EndUpdateMainMenu 方法,但是我在 VCL 文档或 Win32 文档中找不到。
非常感谢任何帮助。谢谢。
【问题讨论】:
-
使用具有整体禁用选项的操作列表
-
谢谢大卫。我正在努力让它快速工作,并且菜单系统非常复杂,从 XML 解析并根据各种情况启用/禁用 Lua 控制。毫无疑问,您的建议可能是正确的,但是我目前没有时间了解操作列表。我想知道我当前的设置是否可以做一些hacky - 也许我缺少一些明显的东西?谢谢
-
很奇怪我的评论被删除了!
-
是的,你为什么要删除它?
标签: c++ delphi winapi c++builder vcl