getmouseclick
- Syntax
-
#include "graphics.h" voud getmouseclick(int kind, int& x, int& y);
- Description
-
The
getmouseclick
function is available in the
winbgim implementation of BGI
graphics.
This function sets x and y to the pixel coordinates of an
unprocessed event of the specified kind. If there is no such
event, then the function sets both x and y to -1.
The value of the argument kind may be any of the constants
listed above. After calling
getmouseclick
, for a particular kind of event, theismouseclick
will return false for that kind of event until another such event occurs.The
kind
argument togetmouseclick
is one of these constants from thegraphics.h
file:WM_MOUSEMOVE
- if you want to detect a mouse movement
WM_LBUTTONDBLCLK
- ...detect when the left mouse button is double clicked
WM_LBUTTONDOWN
- ...detect when the left mouse button is clicked down
WM_LBUTTONUP
- ...detect when the left mouse button is released up
WM_MBUTTONDBLCLK
- ...detect when the middle mouse button is double clicked
WM_MBUTTONDOWN
- ...detect when the middle mouse button is clicked down
WM_MBUTTONUP
- ...detect when the middle mouse button is released up
WM_RBUTTONDBLCLK
- ...detect when the right mouse button is double clicked
WM_RBUTTONDOWN
- ...detect when the right mouse button is clicked down
WM_RBUTTONUP
- ...detect when the right mouse button is released up
The middle mouse button handlers aren't working on my machine. I haven't yet tracked down the reason--it could be a broken mouse or it could be a bug in my programming.
Note: Normally, getmouseclick returns the coordinates of the most recent event of the requested kind. If you want mouse clicks of a particular kind to be queued for processing, then call setmousequeuestatus.
- See also
- clearmouseclick
- ismouseclick
- setmousequeuestatus
- ismouseclick
- Example
-
/* mouse example */ #include "graphics.h" void main(void) { int maxx, maxy; // Maximum x and y pixel coordinates int x, y; // Coordinates of the mouse click int divisor; // Divisor for the length of a triangle side // Put the machine into graphics mode and get the maximum coordinates: initwindow(450, 300); maxx = getmaxx( ); maxy = getmaxy( ); // Draw a white circle with red inside and a radius of 50 pixels: setfillstyle(SOLID_FILL, RED); setcolor(WHITE); fillellipse(maxx/2, maxy/2, 50, 50); // Print a message and wait for a red pixel to be double clicked: settextstyle(DEFAULT_FONT, HORIZ_DIR, 2); outtextxy(20, 20, "Left click in to end."); setcolor(BLUE); divisor = 2; while (!ismouseclick(WM_LBUTTONDOWN)) { triangle(maxx/divisor, maxy/divisor); delay(500); divisor++; } getmouseclick(WM_LBUTTONDOWN, x, y); cout << "The mouse was clicked at: "; cout << "x=" << x; cout << " y=" << y << endl; // Switch back to text mode: closegraph( ); }
Back to index