>プロンプトウィンドウに追加してもどうやってメッセージを拾うのかがわからないorz
サブクラス化するのが手っ取り早いでしょうね。
グローバル変数ではなくウィンドウのGWL_USERDATAを使ったサブクラス化のサンプルにしてみました。
#promptディレクティブを呼び出す前あたりに
コード:
'元のウィンドウ関数アドレスの取得
Const GetOldProcAddr(hWnd) = GetWindowLong(hWnd, GWL_USERDATA)
'CallWindowProc関数を使って元のウィンドウ関数を呼び出す
Const CallOldWindowProc(hWnd, Msg, wParam, lParam) = _
CallWindowProc(GetOldProcAddr(hWnd), hWnd, dwMsg, wParam, lParam)
Function SubClassProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
SubClassProc = 0
Select Case dwMsg
Case WM_SYSCOMMAND
Select Case LOWORD(wParam)
Case IDM_MENU1
MsgBox hWnd, "メニュー1が選択されました"
Case IDM_MENU2
MsgBox hWnd, "メニュー2が選択されました"
Case IDM_MENU3
MsgBox hWnd, "メニュー3が選択されました"
Case Else
SubClassProc = CallOldWindowProc(hWnd, dwMsg, wParam, lParam)
End Select
Case WM_DESTROY
'サブクラス化解除
SetWindowLong(hWnd, GWL_WNDPROC, GetOldProcAddr(hWnd))
Case Else
SubClassProc = CallOldWindowProc(hWnd, dwMsg, wParam, lParam)
End Select
End Function
とコードを追加して、さらにシステムメニューを追加した後に
コード:
'サブクラス化開始
SetWindowLong(_PromptSys_hWnd, GWL_USERDATA, SetWindowLong(_PromptSys_hWnd, _
GWL_WNDPROC, AddressOf(SubClassProc)))
とすれば、追加したシステムメニューに合わせたイベントが追加できます。