[C/C++] Click chuột trong Dev-C++ – Mouse event in Dev-C++
Trong bài viết này mình sẽ hướng dẫn về một số hàm bắt sự kiện click chuột trong chế độ đồ họa Dev-C++.
void getmouseclick( int kind, int& x, int& y );
-> lấy tọa độ x,y ( theo pixel) mà ở đó có click
bool ismouseclick( int kind );
-> trả về true nếu xảy ra click
int mousex( ); -> lấy tọa độ chuột theo trục x
int mousey( ); -> lấy tọa độ chuột theo trục y
WM_MOUSEMOVE : bắt sự kiện khi di chuyển chuột trong màn hình đồ họa
WM_LBUTTONDBLCLK : bắt sự kiện khi nhấn đúp chuột trái
WM_LBUTTONDOWN : bắt sự kiện khi nhấn chuột trái
WM_LBUTTONUP : bắt sự kiện khi thả sau khi nhấn chuột trái
Tuơng tự với chuột giữa và chuột phải
WM_MBUTTONDBLCLK
WM_MBUTTONDOWN
WM_MBUTTONUP
WM_RBUTTONDBLCLK
WM_RBUTTONDOWN
WM_RBUTTONUP
Còn rất nhiều hàm khác bạn xem tại đây: http://www.cs.colorado.edu/~main/bgi/doc/
Một đoạn code minh họa bắt sự kiện chuột trái, phải.
#include <winbgim.h> #include <stdio.h> #include <string.h> int main(){ setbkcolor(1); int x, y; initwindow(800,500); setbkcolor(15); cleardevice(); while (1){ delay(0.0001); if (ismouseclick(WM_LBUTTONDOWN)){ getmouseclick(WM_LBUTTONDOWN, x, y); printf("left click : (%d,%d)n", x, y); } if (ismouseclick(WM_LBUTTONUP)){ getmouseclick(WM_LBUTTONUP, x, y); printf("left up click : (%d,%d)n", x, y); } if (ismouseclick(WM_LBUTTONDBLCLK)){ getmouseclick(WM_LBUTTONDBLCLK, x, y); printf("left double click : (%d,%d)n", x, y); } if (ismouseclick(WM_RBUTTONDOWN)){ getmouseclick(WM_RBUTTONDOWN, x, y); printf("right click : (%d,%d)n", x, y); } if (ismouseclick(WM_RBUTTONUP)){ getmouseclick(WM_RBUTTONUP, x, y); printf("right up click : (%d,%d)n", x, y); } if (ismouseclick(WM_RBUTTONDBLCLK)){ getmouseclick(WM_RBUTTONDBLCLK, x, y); printf("right double click : (%d,%d)n", x, y); } if (ismouseclick(WM_MOUSEMOVE)){ getmouseclick(WM_MOUSEMOVE, x, y); printf("move : (%d,%d)n", x, y); } } system("pause"); closegraph(); }
Kết quả khi click và di chuyển chuột trong màn hình đồ họa:
Một đoạn video mình quay cái vẽ đường thằng bằng chuột nhưng chưa chuẩn vì còn lỗi:
Tham khảo: Đồ họa trong Dev-C
có cái đồng hồ đặc biệt đó
Cảm ơn bạn 😀
cái đoạn code phía trên mình copy paste vào bản dev c++ 5.11 nó báo lỗi như vầy là sao thế:
C:\Users\hiep\Desktop\eventmouse.o eventmouse.cpp:(.text+0x0): multiple definition of `main’
C:\Users\hiep\Desktop\main.o main.cpp:(.text+0x0): first defined here
C:\Program Files\Dev-Cpp\collect2.exe [Error] ld returned 1 exit status
25 C:\Program Files\Dev-Cpp\Makefile.win recipe for target ‘MyProject.exe’ failed
mong bạn giải thích và chỉ mình cách khắc phục. thank nhiều
Cái lỗi này mình cũng chưa gặp. Bạn thử tìm google xem và nếu có cách khắc phục thì bạn vui lòng comment lại để mọi người biết nhé.
à mình vừa mới xem lại. cơ mà lm xong nó tạo ra 2 file có đuôi .cpp và .dev. mình chạy ở cái .cpp thì bị lỗi trên. còn .dev thì ok. tại trước giờ mình hay làm ở new/new source, nó chỉ tạo ra mỗi cái .cpp nên mình k biết. mà bạn có code của chuột giữa k cho mình với, mình mới tập viết về phần chuột, mà cho mình hỏi xíu cái delay(0.0001); nó có chức năng gì trong đây vậy. vì mình xóa thử thì thấy nó chỉ hiện đc cái khung windows và bị not responding.
Nó dùng để dừng chương trình trong 1 ms.
Anh ơi lệnh getimage sao em dùg nó báo lỗi vậy a
Anh hướng dẫn e cách lưu hình vào biến được ko a