#include "graphics.h" voud getmouseclick(int kind, int& x, int& y);
getmouseclick
, for a particular kind of event, the ismouseclick
will return false for that kind of event until another such event occurs.
The kind
argument to getmouseclick
is one of these constants from the graphics.h
file:
WM_MOUSEMOVE
WM_LBUTTONDBLCLK
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_MBUTTONDBLCLK
WM_MBUTTONDOWN
WM_MBUTTONUP
WM_RBUTTONDBLCLK
WM_RBUTTONDOWN
WM_RBUTTONUP
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.
/* 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( ); }