フォームの閉じるボタンを有効化・無効化する

フォームの閉じるボタンを有効化・無効化するには、EnableMenuItem関数を使います。また、閉じるボタンの状態を取得するには、GetSystemMenu関数を使います。例えば、次のようにします。
//---------------------------------------------------------------------------
bool __fastcall IsCloseButtonEnabled(TCustomForm* AForm)
{
        const UINT state = GetMenuState(
                GetSystemMenu(AForm->Handle, false),
                SC_CLOSE,
                MF_BYCOMMAND);
        if(state == 0xFFFFFFFF) {
                throw EInvalidArgument("Cannot get the state of a close button.");
        }
        return (state & MF_GRAYED) == 0;
}
//---------------------------------------------------------------------------
void __fastcall SetCloseButtonEnabled(TCustomForm* AForm, bool AEnabled)
{
        if(EnableMenuItem(
                GetSystemMenu(AForm->Handle, false),
                SC_CLOSE,
                MF_BYCOMMAND | (AEnabled ? MF_ENABLED : MF_GRAYED)) == 0xFFFFFFFF) {
                throw EInvalidArgument("Cannot set the state of a close button.");
        }
}
//---------------------------------------------------------------------------
最終更新: 2008-07-17

戻る