【发布时间】:2012-12-29 07:49:47
【问题描述】:
似乎Onclick 事件未针对具有子项的菜单项进行处理。
我意识到我可以创建一个用户可以使用的叶子项目,但我想让我的菜单文件夹响应 OnClick(在我的情况下“启动”所有子项目)
有没有办法绕过这个限制?
【问题讨论】:
似乎Onclick 事件未针对具有子项的菜单项进行处理。
我意识到我可以创建一个用户可以使用的叶子项目,但我想让我的菜单文件夹响应 OnClick(在我的情况下“启动”所有子项目)
有没有办法绕过这个限制?
【问题讨论】:
具有子项的菜单项确实会触发 OnClick 事件。但它们会在子菜单打开时触发,而不是在您单击父菜单项时触发。
我很确定您不想在发生这种情况时调用所有子项。每当打开子菜单时,就会触发父菜单的 OnClick 事件。当您单击父菜单项时,将鼠标悬停在其上,或者在通过键盘选择菜单项时按右箭头键。
因此,父菜单的OnClick 事件对应于打开子菜单。打开子菜单时调用所有子菜单项操作违反了所有标准的预期 UI 行为。您应该做的是添加另一个可用于调用所有操作的子项。除非没有明智的选择,否则不要违背平台标准 UI。
【讨论】:
WM_LBUTTONDOWN 和 WM_LBUTTONUP。我使用 Spy++ 确定了这一点。您必须解码消息 pos 以确定点击是否在您的特殊菜单项上。您还需要注意那些使用键盘访问您的菜单的人。显然,可以按照您的要求去做,但是您真的应该非常努力地考虑制作这样一个奇怪且违反直觉的 UI。您自己已经确定了一个非常好的替代方案。你应该这样做。