Applies to: desktop apps only
Posted when the user presses the right mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
A window receives this message through its WindowProc function.
#define WM_RBUTTONDOWN 0x0204
Parameters
- wParam
-
Indicates whether various virtual keys are down. This parameter can be one or more of the following values.
- lParam
-
The low-order word specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
The high-order word specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
Return value
If an application processes this message, it should return zero.
Remarks
Use the following code to obtain the horizontal and vertical position:
xPos = GET_X_LPARAM(lParam); yPos = GET_Y_LPARAM(lParam);
You can also use the MAKEPOINTS macro to convert the lParam parameter to a POINTS structure.
To detect that the ALT key was pressed, check whether GetKeyState with VK_MENU < 0. Note, this must not be GetAsyncKeyState.
Requirements
|
Minimum supported client | Windows 2000 Professional |
|---|---|
|
Minimum supported server | Windows 2000 Server |
|
Header |
|
See also
- Reference
- GET_X_LPARAM
- GET_Y_LPARAM
- GetCapture
- GetKeyState
- SetCapture
- WM_RBUTTONDBLCLK
- WM_RBUTTONUP
- Conceptual
- Mouse Input
- Other Resources
- MAKEPOINTS
- POINTS
Send comments about this topic to Microsoft
Build date: 3/6/2012
void
CKtoolDlg::OnRButtonDown(UINT nFlags, CPoint point){
CDialog::OnRButtonDown(nFlags, point);
}
error C2039: 'OnRButtonDown' : is not a member of 'CDialog'
how I solve this problem
WM_RBUTTONDOWN = &H204
MK_CONTROL = &H8
MK_LBUTTON = &H1
MK_MBUTTON = &H10
MK_RBUTTON = &H2
MK_SHIFT = &H4
MK_XBUTTON1 = &H20
MK_XBUTTON2 = &H40
case WM_RBUTTONDOWN:
{
int mx = LOWORD(lParam);
int my = HIWORD(lParam);
int taste = wParam;
Maus.X_alt = Maus.X;
Maus.Y_alt = Maus.Y;
Maus.X = mx;
Maus.Y = my;
if (taste == MK_LBUTTON) {Maus.Links = true; Maus.LinksGed = true; }
if (taste == MK_RBUTTON) {Maus.Rechts = true; Maus.RechtsGed = true; }
if (taste == MK_MBUTTON) {Maus.Mitte = true; Maus.MitteGed = true; }
}
break;