getmouseclick
- Syntax
-
#include "graphics.h" voud getmouseclick(int kind, int& x, int& y);
- Description
![[WIN]](http://users.atw.hu/laciba/app_help/cpp/bgi/win.gif)
-
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, theismouseclickwill return false for that kind of event until another such event occurs.The
kindargument togetmouseclickis one of these constants from thegraphics.hfile: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
