閉じる「×」ボタンの無効化(T)(U) <TOP>
フォームの閉じる「×」ボタンを無効化します。
RemoveMenu システムメニューの削除
GetSystemMenu システムメニューのハンドル取得
(T)、(U)ともに同じ動作をします。
左:システムメニューの初期状態 中:起動時の状態(×が無効化) 右:システムメニューの「閉じる」は削除されている
※参照
<システムメニューの削除>
左:F-Basic 右:Visual Basic 6 (Vistaで、Aero On/Off 時の「X」ボタンの状態に注目??)
'================================================================ '= 閉じるボタン「×」の無効化 '= (RemoveMenu.bas) '================================================================ #include "Windows.bi" #define MF_BYPOSITION &H400 'nPositionはメニュー項目のインデックス ' システムメニューの削除 Declare Function Api_RemoveMenu& Lib "user32" Alias "RemoveMenu" (ByVal hMenu&, ByVal nPosition&, ByVal wFlags&) ' システムメニューのハンドル取得 Declare Function Api_GetSystemMenu& Lib "user32" Alias "GetSystemMenu" (ByVal hWnd&, ByVal bRevert&) Var Shared Button1 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var hSysMenu As Long Var Ret As Long hSysMenu = Api_GetSystemMenu(GethWnd, 0) Ret = Api_RemoveMenu(hSysMenu, 6, MF_BYPOSITION) Ret = Api_RemoveMenu(hSysMenu, 5, MF_BYPOSITION) End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() End End Sub '================================================================ '= '================================================================ Declare Sub MainForm_Resize edecl () Sub MainForm_Resize() Button1.MoveWindow GetWidth - (Button1.GetWidth + 22), GetHeight - (Button1.GetHeight + 50) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End
'================================================================ '= 閉じる「×」ボタンの無効化(U) '= (RemoveMenu.bas) '================================================================ #include "Windows.bi" ' システムメニューのハンドル取得 Declare Function Api_GetSystemMenu& Lib "user32" Alias "GetSystemMenu" (ByVal hWnd&, ByVal bRevert&) ' システムメニューの削除 Declare Function Api_RemoveMenu& Lib "user32" Alias "RemoveMenu" (ByVal hMenu&, ByVal nPosition&, ByVal wFlags&) #define SC_CLOSE &HF060 '閉じる #define MF_BYCOMMAND &H0 'nPositionはメニュー項目のID Var Shared Button1 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var hSysMenu As Long Var Ret As Long 'システムメニューハンドル取得 hSysMenu = Api_GetSystemMenu(GethWnd, 0) 'クローズ[×]削除 Ret = Api_RemoveMenu(hSysMenu, SC_CLOSE, MF_BYCOMMAND) End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() End End Sub '================================================================ '= '================================================================ Declare Sub MainForm_Resize edecl () Sub MainForm_Resize() Button1.MoveWindow GetWidth - (Button1.GetWidth + 22), GetHeight - (Button1.GetHeight + 50) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End