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