システムメニューに項目を挿入 <TOP>
システムメニューに新たな項目を挿入します。
InsertMenu 指定されたメニューに新しいメニュー項目を挿入し、他のメニュー項目を下へ移動
GetSystemMenu システムメニューのハンドル取得
GetMenuItemCount メニューの項目数を取得
GetMenuItemID メニュー項目のIDを取得
'================================================================ '= システムメニューに項目を挿入
'= (InsertMenu.bas) '================================================================ #include "Windows.bi" ' 指定されたメニューに新しいメニュー項目を挿入し、他のメニュー項目を下へ移動 Declare Function Api_InsertMenu& Lib "user32" Alias "InsertMenuA" (ByVal hMenu&, ByVal uPosition&, ByVal uFlags&, ByVal uIDNewItem&, ByVal lpNewItem$) ' システムメニューのハンドル取得 Declare Function Api_GetSystemMenu& Lib "user32" Alias "GetSystemMenu" (ByVal hWnd&, ByVal bRevert&) ' メニューの項目数を取得 Declare Function Api_GetMenuItemCount& Lib "user32" Alias "GetMenuItemCount" (ByVal hMenu&) ' メニュー項目のIDを取得 Declare Function Api_GetMenuItemID& Lib "user32" Alias "GetMenuItemID" (ByVal hMenu&, ByVal nPos&) #define SC_CLOSE &HF060 '閉じる #define SC_MAXIMIZE &HF030 '最大化 #define SC_MINIMIZE &HF020 '最小化 #define SC_MOVE &HF010 '移動 #define SC_RESTORE &HF120 '元のサイズに戻す #define SC_SIZE &HF000 'サイズ変更 #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_HILITE &H80 'メニューの項目を強調表示 #define MF_MOVE &H1000 ' #define MF_SEPARATOR &H800 'メニュー項目はセパレータ #define MF_STRING &H0 '文字列 #define MF_UNHILITE &H0 'メニューの項目を強調表示しない Var Shared Text1 As Object Var Shared Edit1 As Object Var Shared Button1 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Var Shared Cnt As Integer '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hMenu As Long Var nPos As Long Var mMax As Long Var NewStr As String Var Ret As Long Cnt = Cnt + 1 NewStr = "追加メニュー項目" & Trim$(Str$(Cnt)) hMenu = Api_GetSystemMenu(GethWnd, 0) 'システムメニューのハンドル取得 mMax = Api_GetMenuItemCount(hMenu) 'メニューの項目数を取得 nPos = Val(Edit1.GetWindowText) '挿入場所を設定 If nPos < 0 Or nPos > mMax Then Edit1.SetWindowText "" Edit1.SetFocus Exit Sub End If Ret = Api_GetMenuItemID(hMenu, nPos) Ret = Api_InsertMenu(hMenu, Ret, MF_BYCOMMAND, 0, NewStr) If Ret <> 0 Then A% = MessageBox("", "「" & NewStr & "」を追加しました", 0, 2) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End