PDA

View Full Version : [Q] Theo doi toa do Mouse trong VC++



SkidRow
13-01-2003, 15:02
Help (VC++6.0 dung Plaform SDK)
Minh dang tim cach de theo doi toa do cua Mouse trong toan bo cua so. Vi du: neu Mouse di chuyen vao khu vuc cua ChildWindow nhu Button (Rect cua Button) thi se thong bao cho biet ngay lap tuc
nhung ma khong lam duoc vi ...
1) TrackMouseEvent(), WM_MOUSELEAVE, WM_MOUSEHOVER... bi ERROR : "undeclared identifier" mac du chung duoc khai bao ro rang trong "Winuser.h"
2) lan theo toa do cua WM_MOUSEMOVE thi khong duoc... khi Cursor vua vao Rect cua ChildWnd(Button) thi WM_MOUSEMOVE khong duoc gui den WndProc nua >> khong the dung ChildWindowFromPoint() (voi x,y la toa do Cursor cap boi WM_MOUSEMOVE hoac GetCursorPos()) >> khong the biet duoc Cursor dang o dau
3) trong CodeGuru co cach giai quyet >> nhung nhin vao minh thay dai qua >> hoa ca mat
4) vay thi chac chi con cach Hook Mouse ?????

MSDN + Help files luc nay cung kho hieu qua >> xin moi nguoi giup do cho nhanh

THANKS

tinystar
14-01-2003, 09:12
Bạn nên dùng TrackMouseEvent là đơn giản nhất, nếu không dùng Hook cũng được, ko sao tuy nhiên hơi phức tạp.

(bạn nên viết có dấu, ko dấu mình lười đọc lắm)

SkidRow
14-01-2003, 14:33
TrackMouseEvent() không được (mình dùng VC6(SDK) trong WinXPpro), khi compile bị ERROR: "undeclared identifier" ??? không thể hiểu nổi (mình đọc MSDN + help files hơi kỹ rồi)>> chi tiết hơn thì bạn vào trang này, mình đã kể chi tiết
http://www.ttvnol.com/forum/t_146943
Bạn chỉ giúp mình cách HOOK Mouse xem >> theo dõi toạ độ Mouse trên cả toàn bộ Screen được không?
Bạn thấy dùng ChildWindow(Button) và Button tự vẽ trên background của ParentWindow thì cái nào hay hơn?(giả sử muốn làm BUTTON hình tròn cơ)

Thank you!

À mà mình đã xem chương trình "cờ ca rô" của bạn rồi >> hay quá >> cách đây 1 tháng mình cũng tự làm 1 App như thế nhưng vấn đề giải thuật cho CPU tấn công Human thì không làm được >> phức tạp quá >> thành ra CPU chỉ biết chống đỡ(không biết tấn công) mà chống đỡ cũng chẳng thông minh chút nào >> bạn viết giải thuật chơi cờ ca rô cho CPU mất khoảng bao lâu vậy ???

SkidRow
14-01-2003, 20:04
Để làm cho 1 bitmap (ví dụ 32x32) tối dần thì cách cổ điển là:
1) tìm giá trị RGB của tất cả Pixel trong bitmap (32x32=1,024 Pixel)
2) giảm các giá trị RGB này dần dần về 0
Đối với các bitmap nhỏ thì tốc độ không thành vấn đề (có thể 24p/s) nhưng giả sử bitmap lớn như là 600x800 thì tốc độ quá chậm. Mọi người có biện pháp gì để khắc phục không vậy? mình nghĩ là phải nhúng ASM vào code, đúng không nhỉ?

tinystar
15-01-2003, 16:42
- Cách hook mouse và TrackMouseEvent mình sẽ post mẫu lên cho bạn, chờ nhé.
- Owner draw hiện tại là không cần thiết vì mình thấy Win XP là đẹp lắm rùi, tuy nhiên mình cũng sẽ post mẫu lên cho bạn, plz wait.
- Để làm mờ ảnh như bạn nói bạn nên dùng 1 số hàm được Win hỗ trợ sẵn (Dirextx hoặc OpenGL chẳng hạn), AlpBlen chẳng hạn (bạn check lại API nhé).

tinystar
15-01-2003, 16:46
Còn cở Caro theo mình có rất nhiều cách để nó chơi hay, chương trình của mình là cực kỳ đơn giản và nó chơi lâu lâu bị khùng (vì mình chỉ dùng heuristic). Bạn có thể dùng thêm book, các thuật toán sắp xếp, tìm kiếm để nó chơi hay hơn.

tinystar
15-01-2003, 20:23
Đây là kỹ thuậy hook mouse và bàn phím. Chi tiết, sang www.diendantinhoc.org để đọc thêm trong mục tut hoặc vào đây www.geocities.com/masterthts (quảng cáo tí).

SkidRow
15-01-2003, 20:26
bạn thấy Button có thể làm hình dạng bất kỳ được không. Mình dùng SetWindowRgn() rồi nhưng nó chỉ có tác dụng cho ParentWindow chứ Button(ChildWindow) thì không được ???

tinystar
15-01-2003, 20:27
Đây là kỹ thuật dùng TrackMouseEvent và Ownerdraw tạo nút với hình dạng bất kỳ.

Có gì thắc mắc thì cứ việc post lên, chúng ta cùng trao đổi thêm. Mình hiện cũng đang có vài vấn đề thắc mắc mà không biết hỏi ai.

SkidRow
15-01-2003, 20:27
mình đã down hook.zip >> để mình thử xem kết quả ??

SkidRow
15-01-2003, 20:32
Ái chà , button thay đổi hình dạng >>hay quá ta
chỉ tội mình chưa làm MFC bao giờ (beginner) nên nhìn vào code của MFC nào cũng bị shock
cậu làm Button này bằng SDK lần nào chưa ?

tinystar
15-01-2003, 20:32
lúc mình đang up thì bị disconnect, nếu bị lỗi báo mình up lại nhé.

tinystar
15-01-2003, 20:37
Nãy đang up thì bị disconnect. Mình up chung cả 2 file đây.

tinystar
15-01-2003, 20:37
Nếu bạn thích thì Ok thôi, no vấn đề.
(Như vầy giống chat quá, coi chừng bị xoá bài, hi hi hi)

SkidRow
15-01-2003, 20:38
HOOK >> Wonderful >> chắc chắn clicksee cũng dùng cách này

tinystar
15-01-2003, 20:40
ko click&see dùng cách khác. Bạn xem bên www.diendantinhoc.org/forum mình đã demo click&see

SkidRow
15-01-2003, 20:50
hook và mybutton, bạn có bản nào dùng SDK không vậy ??? nếu có thì cho mình với?? hoặc về bất cứ cái gì cũng được??
thanks trước!!

tinystar
15-01-2003, 20:52
Có nhưng mình xài net ở tiệm. Để bữa sau nhé.

SkidRow
15-01-2003, 20:54
OK no problemmmmm!!!!!!!!

tinystar
15-01-2003, 20:56
Bữa sau chat thì ra chỗ khác, kẻo bị xoá bài đó, hic hic

tinystar
16-01-2003, 09:38
Đây viết bằng API (ko dùng MFC) tuy nhiên chỉ có tạo button với hình dạng bất kỳ thôi (giông MFC thui)

SkidRow
16-01-2003, 20:58
Tuyệt cú mèo ...
cái quan trọng nhất là BitmapToRegion() và ExtCreateRegion() ... không ngờ bước này khó thật
Cũng vì mình quên WS_CLIPSIBLINGS nên ChildWindow không đổi hình dạng được (cái này trong HELP giải thích cũng hơi khó hiểu)
...đã tạo được Region thì theo dõi Mouse không thành vấn đề...
Xin bạn một lời khuyên:
1) Dùng Button(ChildWindow)
2) Vẽ (mô phỏng) Button trên Background của ParentWindow
Bạn thấy cái nào hơn? (xét cả về tốc độ)?????????

tinystar
17-01-2003, 14:35
Bạn nên dùng Button vì :
- Về mặt đẹp nó ko thua gì cách kia (ta có thể tạo mouse move, mouse leave, mouse down, mouse up - dùng TrackMouseEvent )
- Nó tổng quát hơn (hướng đối tượng), reuseable, redistribute ...

tinystar
17-01-2003, 14:53
quên :
- Về mặt tốc độ thì có lẽ chậm hơn nhưng người dùng ko thể nhận ra được sự khác biệt đó ==> no vấn đề.

SkidRow
17-01-2003, 22:49
thank you so much !!!!

tinystar
27-01-2003, 20:13
data base của diễn đàn có vấn đề.

SkidRow
27-01-2003, 20:39
????????????????

nhalaudixetau
26-02-2008, 16:20
Nãy đang up thì bị disconnect. Mình up chung cả 2 file đây.
sao mình không down được về nhỉ ???