WM_CONTEXTMENU

WM_CONTEXTMENU メッセージは、ウィンドウでユーザーがマウスを右クリックしたことを、そのウィンドウに通知します。

ウィンドウは、ウィンドウプロシージャを介してこのメッセージを受け取ります。

#define  WM_CONTEXTMENU    0x007B

hwnd =  wParam;                  // ウィンドウハンドル
xPos =  lParam & 0xFFFF;         // マウスカーソルx座標
yPos = (lParam >> 16) & 0xFFFF;  // マウスカーソルy座標

パラメータ

hwnd

wParam パラメータの値。

ユーザーがマウスを右クリックしたときに、マウスカーソルの下にあるウィンドウのハンドルが指定されます。このウィンドウは、メッセージを受け取ったウィンドウの子ウィンドウである可能性があります。

xPos

lParam パラメータの下位ワードの値。

マウスがクリックされたときのマウスカーソルのx座標がスクリーン座標で指定されます。

yPos

lParam パラメータの上位ワードの値。

マウスがクリックされたときのマウスカーソルのy座標がスクリーン座標で指定されます。

戻り値

アプリケーションがこのメッセージを処理した場合は 0 を返します。

解説

ウィンドウはこのメッセージの処理で TrackPopupMenu 関数や TrackPopupMenuEx 関数でショートカットメニュー(コンテキストメニュー)を表示することができます。

ウィンドウがショートカットメニューを表示しない場合には、このメッセージは DefWindowProc 関数(デフォルトウィンドウプロシージャ)に渡されるべきです。 DefWindowProc 関数は、メッセージを受け取ったウィンドウがウィンドウが子ウィンドウである場合に、メッセージを親ウィンドウに送信します。ウィンドウがトップレベルウィンドウである場合には、 DefWindowProc 関数は、マウスカーソル位置がウィンドウキャプション上にあればデフォルトショートカットメニューを表示します。

デフォルトウィンドウプロシージャは、 WM_RBUTTONUP メッセージまたは WM_NCRBUTTONUP メッセージを処理したとき、もしくは、ユーザーが [Shift]+[F10] キーを押したときに WM_CONTEXTMENU メッセージを発生させます。また、 WM_NCRBUTTONUP メッセージは、ユーザーが VK_APPS キーを押したときにも発生します。

メッセージがキーボード入力によって発生した場合には、x座標およびy座標は 0xFFFF になります。この場合には、アプリケーションはショートカットメニューを (xPos, yPos) の位置ではなく、現在選択されている位置に表示すべきです。

対応情報

Windows 95 以降 / Windows NT 3.51 以降