2012-04-16 33 views
5

Tôi có câu hỏi cơ bản về việc sử dụng WndProc trong đơn đăng ký biểu mẫu của tôi. Tôi muốn biết việc sử dụng phương thức WndProc là gì khi tôi có sẵn các sự kiện biểu mẫu. Trong trường hợp nào tôi cần tạo tin nhắn tùy chỉnh? MSDN cho biết rằng nó chỉ được sử dụng để xử lý các tin nhắn Windows.Tại sao tôi nên sử dụng WndProc khi tôi có sự kiện biểu mẫu?

Trả lời

4

WndProc là cách WinForms cung cấp trình bao bọc xung quanh thông điệp cửa sổ Win32 dễ sử dụng hơn và hiểu lớp .NET.

Thông thường nó hoạt động theo cách sau. Lấy ví dụ về thông báo cửa sổ WM_LBUTTONDOWN. Windows.Forms.Control.WndProc sẽ chặn thông báo này và trích xuất thông tin liên quan từ WPARAM và LPARAM của thông báo. Sau đó, nó gọi phương thức ảo được bảo vệ OnMouseDown với các thông tin liên quan được đóng gói độc đáo vào một MouseEventArgs. Việc triển khai sau đó sẽ kích hoạt sự kiện MouseDown ở cuối quá trình xử lý riêng của nó.

Vì vậy, việc xử lý một tập hợp các phương thức OnXXXX/XXXX sẽ dễ dàng hơn nhiều, sau đó chặn trực tiếp thông báo cửa sổ.

Nhưng nếu thông báo cửa sổ bạn quan tâm không được xử lý bởi WinForms thì sao? Trong trường hợp đó, bạn có thể ghi đè lên WndProc và xử lý nó trực tiếp. Một cách sử dụng khác là đánh chặn một tin nhắn và sau đó loại bỏ nó trước khi bản thân điều khiển có cơ hội xử lý nó. Hoặc bạn có thể tạo tin nhắn tùy chỉnh để gửi giữa các điều khiển trong ứng dụng của bạn. Cũng hữu ích cho việc gỡ lỗi khi bạn muốn xem mọi thông báo điều khiển của bạn nhận được, bạn chỉ cần thêm đăng nhập vào một nơi.

2

.NET là trình bao bọc xung quanh Win32. Nó không phơi bày 100% các phương thức, sự kiện và thuộc tính của mọi thứ trong Windows.

Vì vậy, đôi khi bạn cần phải đi dưới trang bìa.

Tuy nhiên, đó không phải là điều bạn đang tìm kiếm - khi sự cố của bạn yêu cầu, một công cụ tìm kiếm Stack Exchange thường sẽ cho bạn biết.

Các vấn đề liên quan