閉じる「×」ボタンの無効化(V) <TOP>
閉じる「×」ボタンを無効化します。
GetSystemMenu システムメニューのハンドル取得
EnableMenuItem メニュー項目の有効化・無効化
RemoveMenu は、システムメニューから項目を削除しますが、EnableMenuItem は無効化するのみ
左:起動時 中:「× 閉じる(C)」がグレー表示 右:MF_GRAYEDを外した状態「× 閉じる(C)」は効かない
'================================================================ '= 閉じる「×」ボタンの無効化(V) '= (EnableMenuItem.bas) '================================================================ #include "Windows.bi" #define MF_BYCOMMAND &H0 'nPositionはメニュー項目のID #define MF_BYPOSITION &H400 'nPositionはメニュー項目のインデックス #define MF_CHECKED &H8 'メニュー項目にチェックをつける #define MF_DISABLED &H2 'アイテムを無効化(灰色表示にはならない) #define MF_GRAYED &H1 'グレー表示されて選択できない #define MF_SEPARATOR &H800 'メニュー項目はセパレータ #define MF_STRING &H0 '文字列 #define SC_CLOSE &HF060 '閉じる #define SC_MAXIMIZE &HF030 '最大化 #define SC_MINIMIZE &HF020 '最小化 #define SC_MOVE &HF010 '移動 #define SC_RESTORE &HF120 '元のサイズに戻す #define SC_SCREENSAVE &HF140 'スクリーンセーバーを実行するメッセージ #define SC_SIZE &HF000 'サイズ変更 ' システムメニューのハンドル取得 Declare Function Api_GetSystemMenu& Lib "user32" Alias "GetSystemMenu" (ByVal hWnd&, ByVal bRevert&) ' メニューの項目を有効化・無効化 Declare Function Api_EnableMenuItem& Lib "user32" Alias "EnableMenuItem" (ByVal hMenu&, ByVal wIDEnableItem&, ByVal wEnable&) '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var Ret As Long Ret = Api_GetSystemMenu(GethWnd, 0) Ret = Api_EnableMenuItem(Ret, SC_CLOSE, MF_BYCOMMAND Or MF_DISABLED Or MF_GRAYED) ' Ret = Api_EnableMenuItem(Ret, SC_CLOSE, MF_BYCOMMAND Or MF_DISABLED) End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() End End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End