检查菜单项是否在Delphi中使用API​​ Win32启用

时间:2016-01-30 22:48:00

标签: windows delphi winapi menu delphi-xe

当菜单项为禁用时,我在此代码中出现问题,然后将控制应用程序中的代码“PostMessage”传递给崩溃,因为我需要检查菜单项目已启用,然后使用PostMessage。

  HandleMenu:= GetMenu(ParentAppHandle);
  HandleMenu:= GetSubMenu(HandleMenu, 6 {menu item no});
  item:= GetMenuItemID(HandleMenu , 12 {sub menu item no});

  PostMessage(ParentAppHandle, WM_COMMAND, MakeWParam(item, 0), 0);

1 个答案:

答案 0 :(得分:2)

使用WinAPI函数GetMenuState

示例:

var
  State: UINT;
begin
  State:= GetMenuState(HandleMenu , 12, MF_BYPOSITION);
  if (State and (MF_DISABLED or  MF_GRAYED)) = 0 then
  begin
    // Menu Item is enabled
  end
  else
  begin
    // Menu Item is disabled
  end;