実行してすぐに結果がわかるサンプル [ここをクリックすると内容が表示されます]
実行して、左上を右クリックするとメニューが追加されています。
コード: 全て選択
#prompt
Const IDM_MENU1=1001
Const IDM_MENU2=1002
Const IDM_MENU3=1003
Dim hSysMenu As HMENU
hSysMenu=GetSystemMenu(_PromptSys_hWnd,0)
InsMenu hSysMenu,0,MF_BYPOSITION
InsMenu hSysMenu,0,MF_BYPOSITION,Ex"メニュー1",IDM_MENU1,0,0
InsMenu hSysMenu,0,MF_BYPOSITION,Ex"メニュー2",IDM_MENU2,0,0
InsMenu hSysMenu,0,MF_BYPOSITION,Ex"メニュー3",IDM_MENU3,0,0
実用する場合のサンプル [ここをクリックすると内容が表示されます]
コードの最初の方でメニューIDを指定しておく
クリエイトイベントでメニューを追加
WM_SYSCOMMANDを拾う
プロンプトウィンドウに追加してもどうやってメッセージを拾うのかがわからないorzコード: 全て選択
Const IDM_MENU1=1001
Const IDM_MENU2=1002
Const IDM_MENU3=1003
コード: 全て選択
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
Dim hSysMenu As HMENU
hSysMenu=GetSystemMenu(hMainWnd,0)
InsMenu hSysMenu,0,MF_BYPOSITION
InsMenu hSysMenu,0,MF_BYPOSITION,Ex"メニュー1",IDM_MENU1,0,0
InsMenu hSysMenu,0,MF_BYPOSITION,Ex"メニュー2",IDM_MENU2,0,0
InsMenu hSysMenu,0,MF_BYPOSITION,Ex"メニュー3",IDM_MENU3,0,0
End Sub
コード: 全て選択
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
If dwMsg=WM_SYSCOMMAND Then
Select Case LOWORD(wParam)
Case IDM_MENU1
'・・・
Case IDM_MENU2
'・・・
Case IDM_MENU2
'・・・
Case Else
MainWndProc=DefWindowProc(hWnd,dwMsg,wParam,lParam)
ExitFunction
End Select
End If
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function