在 Microsoft Windows 中,这有效:
mnu := GetSystemMenu(h, false);
EnableMenuItem(mnu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
但这不起作用:
mnu := GetSystemMenu(h, false);
EnableMenuItem(mnu, SC_MOVE, MF_BYCOMMAND or MF_GRAYED);
因此,我知道如何禁用窗口的“关闭”系统菜单项,但不知道“移动”项。我怎么做?
更新
当然,使用非常好的函数 EnableMenuItem 的一种替代方法是使用 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);
但这同样适用于 SC_CLOSE,但完全不适用于 SC_MOVE!
更新 2
尽管从某种意义上说,问题已经解决,可以说,可以说,听到关于问题原因的假设会很有趣:为什么 SC_CLOSE 有效但 SC_MOVE 无效?