在我的 Delphi 表单的 OnShow 方法中,我确定打开表单后必须自动打开一个对话框 - 并且我应该能够通过模拟单击菜单项来完成此操作。
但是,调用 menuitem.Click 在主窗体打开之前弹出对话框 - 这不是我想要的。
我希望这应该能做到我想要的,但我找不到要为“wparam”传递哪些参数来将点击发送到我的菜单项。
PostMessage(handle, WM_COMMAND, wparam, 0)
MSDN WM_COMMAND docs谈论 IDM_* 标识符,但它在 Delphi 中是如何出现的?
最佳答案
(我知道这是一个非常古老的问题,但尽管以某种方式得到了解决,但真正的问题确实没有得到解答。)
--
“TMenuItem”的命令项标识符位于 Command
中属性(property)。根据WM_COMMAND的documentation 'wParam' 的高位字为 '0',低位字为菜单标识符;
PostMessage(Handle, WM_COMMAND, MakeWParam(MyMenuItem.Command, 0), 0);
或者简单地;
PostMessage(Handle, WM_COMMAND, MyMenuItem.Command, 0);
对于弹出菜单项,会有细微的差别:VCL 使用不同的实用程序窗口处理弹出菜单的消息。全局PopupList变量的句柄位于其 Window
中属性(property);
PostMessage(PopupList.Window, WM_COMMAND, MyPopupMenuItem.Command, 0);
关于delphi - 发送 WM_COMMAND 到 TMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1259683/