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は機能しないのはなぜですか。