システムメニューの削除          <TOP>


システムメニュー(タイトルバーのアイコンをクリックしたときに表示される)を削除します。

GetSystemMenu システムメニューのハンドル取得

DeleteMenu システムメニューの項目を削除

DrawMenuBar メニューバーを再描画

 

例では、実行ボタンをクリックすると、メニュー項目「移動」が削除された状態を表しています。見た目に変化はありませんが、フォームを移動させたくない場合便利です。

項目インデックスの最上行は、0になります。

  

参照
<閉じるボタン「×」の無効化>

 

'================================================================
'= システムメニューの削除
'=    (DeleteMenu.bas)
'================================================================
#include "Windows.bi"

' システムメニューの項目を削除
Declare Function Api_DeleteMenu& Lib "user32" Alias "DeleteMenu" (ByVal hMenu&, ByVal nPosition&, ByVal wFlags&)

' システムメニューのハンドル取得
Declare Function Api_GetSystemMenu& Lib "user32" Alias "GetSystemMenu" (ByVal hWnd&, ByVal bRevert&)

' メニューバーを再描画
Declare Function Api_DrawMenuBar& Lib "user32" Alias "DrawMenuBar" (ByVal hWnd&)

#define MF_APPEND &H100                 '
#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_SIZE &HF000                  'サイズ変更

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var hSysMenu As Long
    Var Ret As Long
    
    'システムメニューのハンドルを取得
    hSysMenu = Api_GetSystemMenu(GethWnd, 0)

    'システムメニューの「移動」を削除
    Ret = Api_DeleteMenu(hSysMenu, SC_MOVE, MF_BYCOMMAND)

    'システムメニューのインデックス(最上行は0)
    'Ret = Api_DeleteMenu(hSysMenu, 1, MF_BYPOSITION)

    'メニューバーの再描画
    Ret = Api_DrawMenuBar(hSysMenu)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End