В 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