In Microsoft Windows, this works:
mnu := GetSystemMenu(h, false);
EnableMenuItem(mnu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
But this does not work:
mnu := GetSystemMenu(h, false);
EnableMenuItem(mnu, SC_MOVE, MF_BYCOMMAND or MF_GRAYED);
Hence I know how to disable the "Close" system menu item of a window, but not the "Move" item. How do I do that?
Update
Of course one alternative to using the very nice function EnableMenuItem, is to use SetMenuItemInfo:
FillChar(info, sizeOf(info), 0);
with info do
begin
cbSize := sizeOf(info);
fMask := MIIM_STATE;
fState := MFS_GRAYED;
end;
SetMenuItemInfo(mnu, SC_MOVE, false, info);
But this again works perfectly for SC_CLOSE, but not at all for SC_MOVE!
Update 2
Even though the problem is resolved in the sense that a working code has been found that "does the job", so to speak, it would be interesting to hear hypotheses regarding the cause of the problem: Why does SC_CLOSE work but not SC_MOVE?
It's a bit of a mystery but it works if you use ModifyMenu or DeleteMenu:
or: