by みどるべあ » 2006年2月19日(日) 02:22
タイトルバーなどを右クリックすると出てくるメニューに追加できます。
実行してすぐに結果がわかるサンプル [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
#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
実行して、左上を右クリックするとメニューが追加されています。
実用する場合のサンプル [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]
コード: 全て選択
Const IDM_MENU1=1001
Const IDM_MENU2=1002
Const IDM_MENU3=1003
コードの最初の方でメニューIDを指定しておく
コード: 全て選択
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
WM_SYSCOMMANDを拾う
プロンプトウィンドウに追加してもどうやってメッセージを拾うのかがわからないorz
タイトルバーなどを右クリックすると出てくるメニューに追加できます。
[hide=実行してすぐに結果がわかるサンプル][code]#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[/code]
実行して、左上を右クリックするとメニューが追加されています。
[/hide]
[hide=実用する場合のサンプル]
[code]Const IDM_MENU1=1001
Const IDM_MENU2=1002
Const IDM_MENU3=1003[/code]
コードの最初の方でメニューIDを指定しておく
[code]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[/code]
クリエイトイベントでメニューを追加
[code]' ウィンドウメッセージを処理するためのコールバック関数
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[/code]
WM_SYSCOMMANDを拾う
[/hide]
プロンプトウィンドウに追加してもどうやってメッセージを拾うのかがわからないorz