VicoTas
Câu hỏi
avatar duc_tam379
25/05/2013 20:37

Sự kiện WM_LBUTTONUP là thả chuột trái, WM_LBUTONDOWN là nhấn chuột trái... Vậy có cách nào để hủy sự kiện nhấn và thả chuột không?

1. Sự kiện WM_LBUTTONUP là thả chuột trái, WM_LBUTONDOWN là nhấn chuột trái... Vậy có cách nào để hủy sự kiện nhấn và thả chuột không?
2. Có thể tìm cuốn "Advanced Windows: The Developers Guide to the Win32 API for Windows" ở đâu?

Danh sách câu trả lời (1)
avatar sometime 25/05/2013 20:37
1. Theo cơ chế xử lý sự kiện I/O của Windows thì mỗi khi có 1 sự kiện xảy ra trên 1 thiết bị I/O nào đó (bàn phím, chuột,...), sự kiện này sẽ được gửi từ thiết bị tới Windows, rồi Windows mới gửi tiếp tới cửa sổ ứng dụng đang "focus" để ứng dụng đó xử lý. Trên dây chuyền gửi sự kiện này, Windows cho phép người lập trình viết hàm xử lý theo yêu cầu riêng của mình rồi câu móc vào Windows để Windows gửi sự kiện về hàm này thay vì gửi trực tiếp về ứng dụng. Nhiệm vụ của hàm câu móc này là xử lý sự kiện theo yêu cầu riêng của mình, thí dụ chặn bỏ bớt, thêm vào hay hiệu chỉnh thuộc tính của sự kiện đó trước khi gửi về ứng dụng. Như vậy, để bỏ hay hủy sự kiện nào đó của chuột (hay của thiết bị khác), bạn hãy viết 1 hàm hook, câu móc hàm này vào Windows (bằng cách gọi hàm SetWindowHook), code trong hàm hook của bạn sẽ kiểm tra xem sự kiện tiếp nhận là gì, nếu đúng là sự kiện mình muốn lọc bỏ thì lọc bỏ, nếu không cứ để nguyên và gửi về ứng dụng.

Bạn nên tham khảo tài liệu liên quan đến "Windows Hook" trong CD MSDN của Microsoft để biết chi tiết cụ thể về cơ chế hook của Windows cùng các đoạn code mẫu để thực hiện hook vào Windows để xử lý sự kiện theo yêu cầu.

2. Bạn có thể đến phòng photo của Khoa CNTT trường ĐHBK TP.HCM để nhờ copy cuốn "Advanced Windows : The Developers Guide to the Win32 API for Windows".
Trả lời câu hỏi
Tải lại mã
Câu hỏi lĩnh vực Lập trình
nophoto Trong lập trình VB, khi nhấn phím Enter, focus sẽ tự động nhảy sang control có index kế tiếp?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

nophoto Xin giải thích từng toán tử trong ngôn ngữ VB 6.0 bao gồm toán tử số học, toán tử so sánh, toán tử logic?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

nophoto Xin hướng dẫn cách tạo form có giao diện WinXP trong VB6?

Đăng lúc: 17:05 - 22/07/2013 trong Lập trình

nophoto Trong VB 6.0, có cách nào làm cho nội dung của textbox có nhiều màu sắc khác nhau?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

nophoto Xin hướng dẫn viết chương trình đọc dữ liệu (điện áp, tốc độ động cơ...) từ cổng COM ?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

nophoto Xin hướng dẫn lập trình VB 6 lấy dữ liệu trọng lượng từ cân điện tử bên ngoài (cân điện tử có nhiều cổng: COM, USB...)?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

Hương Xin hướng dẫn viết chương trình chat cho phép gởi hình mặt cười từ server sang client bằng DHTML control ?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

nophoto Để chạy 1 chương trình viết bằng các ngôn ngữ .Net (cụ thể là VB.Net), máy tính bắt buộc phải có cài Net Framework?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

nophoto Xin hướng dẫn hiện thực thuật giải Huffman bằng ngôn ngữ Pascal???

Đăng lúc: 23:33 - 26/06/2013 trong Lập trình

nophoto Dùng C# trên Visual Studio.NET hay Java trên JBuilder viết chương trình chỉ có 1 nút lệnh cũng chiếm đến 2 MB?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

nophoto Vì sao dùng hàm Pset có sẵn trên VB thì lại chậm hơn so với SetPixel của API?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

nophoto Lập trình VB 6.0 dùng hàm Sendkeys {"Tab"} để dời focus trên các đối tượng trên form nhưng có lúc được có lúc không?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

nophoto Làm thế nào để có thể lập trình với bộ thư viện của Lạc Việt?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

nophoto Xin hỏi cách chuyển 1 ký tự Unicode 2 byte trong C# và VB.NET thành ký tự ASCII?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

Thu Trang Phương pháp lập trình lập lịch CPU theo kiểu round-robin?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

lê văn nguyên Xin hướng dẫn lập trình C++ xuất file *.bmp ra màn hình?

Đăng lúc: 20:36 - 25/05/2013 trong Lập trình

nophoto Trong VB.Net 2005 làm sao để nắm bắt sự kiện khi nhấn ENTER thì focus nhảy từ textbox1 sang textbox2 và ngược lại?

Đăng lúc: 20:35 - 25/05/2013 trong Lập trình

nophoto Lập chương trình nghe nhạc bằng VB 6.0, chương trình chạy tốt nhưng chạy một lúc thì bộ nhớ bị đầy và phát sinh lỗi rồi treo?

Đăng lúc: 20:35 - 25/05/2013 trong Lập trình

nophoto Xin hướng dẫn lập trình bằng OCX của Windows Media Player 10 để chơi nhạc liên tục cho đến hết danh sách sẵn có?

Đăng lúc: 20:35 - 25/05/2013 trong Lập trình

Hương Trong VB6 không tìm thấy Winsock trong thư viện Controls?

Đăng lúc: 20:35 - 25/05/2013 trong Lập trình

Rao vặt Siêu Vip