将WM_COMMAND发送到TMenuItem

Rod*_*ddy 3 delphi winapi postmessage tmenuitem

在我的Delphi表单的OnShow方法中,我确定在打开表单后必须自动打开一个对话框 - 我应该可以通过模拟menuitem上的点击来完成此操作.

但是,调用menuitem.Click会在主窗体打开之前显示对话框 - 这不是我想要的.

我希望这应该做我想要的,但我找不到要通过"wparam"将点击发送到我的menuitem的参数.

PostMessage(handle, WM_COMMAND, wparam, 0)
Run Code Online (Sandbox Code Playgroud)

MSDN文档WM_COMMAND谈IDM_*标识符,但如何出现在德尔福?

Ser*_*yuz 5

(我知道这是一个非常古老的问题,但尽管在某种程度上得到了解决,但真正的问题确实没有得到解答.)
-

'TMenuItem'的命令项标识符位于Command属性中.根据WM_COMMAND的文档,'wParam'的高位字是'0',低字是菜单标识符;

PostMessage(Handle, WM_COMMAND, MakeWParam(MyMenuItem.Command, 0), 0);
Run Code Online (Sandbox Code Playgroud)

或者干脆;

PostMessage(Handle, WM_COMMAND, MyMenuItem.Command, 0);
Run Code Online (Sandbox Code Playgroud)


使用弹出菜单项会略有不同:VCL使用不同的实用程序窗口处理弹出菜单的消息.全局PopupList变量在其Window属性中具有它的句柄;

PostMessage(PopupList.Window, WM_COMMAND, MyPopupMenuItem.Command, 0);
Run Code Online (Sandbox Code Playgroud)