Programming Reference/Librarys
Question & Answer
Q&A is closed
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, 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 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 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( ); } ==== Example of getmouseclick ==== <code c> /* 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( ); }
no output of example at the moment
do not hesitate and add it...