閉じる「×」ボタンの無効化(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