WM_CONTEXTMENU メッセージは、ウィンドウでユーザーがマウスを右クリックしたことを、そのウィンドウに通知します。
ウィンドウは、ウィンドウプロシージャを介してこのメッセージを受け取ります。
#define WM_CONTEXTMENU 0x007B hwnd = wParam; // ウィンドウハンドル xPos = lParam & 0xFFFF; // マウスカーソルx座標 yPos = (lParam >> 16) & 0xFFFF; // マウスカーソルy座標
wParam パラメータの値。
ユーザーがマウスを右クリックしたときに、マウスカーソルの下にあるウィンドウのハンドルが指定されます。このウィンドウは、メッセージを受け取ったウィンドウの子ウィンドウである可能性があります。
lParam パラメータの下位ワードの値。
マウスがクリックされたときのマウスカーソルのx座標がスクリーン座標で指定されます。
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 以降