閉じる「×」ボタンの無効化(W) <TOP>
閉じる「×」ボタンを無効化します。
GetSystemMenu
システムメニューのハンドル取得
DeleteMenu
システムメニューの項目を削除
DrawMenuBar
メニューバーを再描画
左:起動直後 右:メニューの内容
左:「実行」ボタンで「×」を無効化 右:メニューの内容
区切り線を削除しない場合のメニューの内容
'================================================================ '= 閉じる「×」ボタンの無効化(W) '= (DrawMenuBar.bas) '================================================================ #include "Windows.bi" ' システムメニューのハンドル取得 Declare Function Api_GetSystemMenu& Lib "user32" Alias "GetSystemMenu" (ByVal hWnd&, ByVal bRevert&) ' システムメニューの項目を削除 Declare Function Api_DeleteMenu& Lib "user32" Alias "DeleteMenu" (ByVal hMenu&, ByVal nPosition&, ByVal wFlags&) ' メニューバーを再描画 Declare Function Api_DrawMenuBar& Lib "user32" Alias "DrawMenuBar" (ByVal hWnd&) #define SC_CLOSE &HF060 '閉じる #define MF_BYCOMMAND &H0 'nPositionはメニュー項目のID Var Shared Button1 As Object Var Shared Button2 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Button2.Attach GetDlgItem("Button2") : Button2.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hMenu As Long Var Ret As Long hMenu = Api_GetSystemMenu(GethWnd, 0) If hMenu Then '「×」を削除 Ret = Api_DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND) '区切り線を削除 Ret = Api_DeleteMenu(hMenu, 0, MF_BYCOMMAND) '変更を反映するために再描画 Ret = Api_DrawMenuBar(GethWnd) End If End Sub '================================================================ '= '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() End End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End