Tôi chưa bao giờ hiểu rõ lý do tại sao xóa nền có thông báo cửa sổ riêng biệt. Tôi trông hơi dư thừa đối với tôi. Khi tôi đã tạo các nút do chủ sở hữu vẽ, tôi đã luôn luôn xóa nền sau từ bên trong WM_PAINT. Đôi khi tôi đã thực hiện tất cả các bức tranh từ bên trong WM_ERASEBKGND và để trống WM_PAINT. Cả hai dường như làm việc tốt. Có lợi thế nào để tách bức tranh thành 2 hoạt động?Tại sao có một thông điệp riêng biệt cho WM_ERASEBKGND
6
A
Trả lời
4
Điều này hoàn toàn đoán:
Quay lại những ngày cũ, điền hình chữ nhật có màu là hoạt động tương đối chậm. Nhưng làm đầy một hình chữ nhật lớn vẫn còn nhanh hơn rất nhiều so với điền vào rất nhiều hình chữ nhật nhỏ.
Tôi đoán rằng nếu bạn có cửa sổ có cửa sổ con và cả hai đều có cùng nền tảng đã đăng ký, thì Windows đủ thông minh để nhận ra nó không cần gửi WM_ERASEBKGND cho đứa trẻ khi nó đã bị xóa cha mẹ. Với một hộp thoại vừa phải phức tạp trên một máy tính rất chậm, điều này có thể là một cải tiến đáng kể.
Các vấn đề liên quan
- 1. Tại sao một trình duyệt thực hiện hai yêu cầu riêng biệt cho cùng một tệp?
- 2. Tại sao có phương thức equals riêng cho các bộ?
- 3. Tại sao phải SetWindowsHookEx được sử dụng với một hàng đợi thông điệp cửa sổ
- 4. Tại sao các tệp thẻ riêng biệt trong Mercurial
- 5. lý do tại sao riêng biệt icache và dcache cần
- 6. gen_tcp bẩn lem nhem một thông điệp
- 7. Tại sao một enum được khai báo trong một tệp riêng biệt, trong Java?
- 8. Xác định thông điệp WM riêng cho Message Pump trong C++
- 9. Tại sao BIAS là cần thiết trong ANN? Chúng ta có nên có BIAS riêng biệt cho mỗi lớp không?
- 10. thông điệp hàng đợi RabbitMQ
- 11. NLS thiếu thông điệp: CANNOT_FIND_FACELET_TAGLIB
- 12. Tăng thông điệp Asio_flags
- 13. Tại sao ListObjects trả lại tiền tố dưới dạng một đối tượng riêng biệt trong mảng?
- 14. Chế biến một thông điệp đúng một lần
- 15. Tại sao có một JVM cho mỗi ứng dụng?
- 16. Tôi có thể xuất thông điệp Trace vào một cửa sổ riêng trong Visual C# 2008 Express không?
- 17. thông điệp cảnh báo Firefox
- 18. Tại sao các lớp bên trong làm cho các phương thức riêng có thể truy cập?
- 19. Bộ nhớ cache HTML5 - Có thể có một số cache riêng biệt cho một URL không?
- 20. Đoạn trích Lilypond cho một coda riêng biệt
- 21. OOP - Thông điệp đi qua trong C#
- 22. Tại sao có một đặc biệt mới và xóa cho mảng?
- 23. Xác nhận với thông điệp động?
- 24. Tại sao Direct3D không có cấu trúc đỉnh riêng?
- 25. Tại sao VIM có cú pháp regex riêng?
- 26. Ứng dụng xem riêng biệt cho nhật ký của ELMAH
- 27. Một MediaPlayer có nên chạy trong chuỗi riêng biệt không?
- 28. Ở Akka, tôi có thể giả mạo một thông điệp từ một diễn viên khác không?
- 29. Câu riêng biệt cho một từ trên mỗi dòng
- 30. Highcharts datalabels riêng biệt cho mỗi loạt
Như được giải thích dưới đây, đây là phần còn lại từ những ngày cũ. Đối với một ứng dụng hiện đại, bạn nên luôn trả về 1 (TRUE) để trả lời 'WM_ERASEBKGND' và thực hiện thao tác vẽ trong' WM_PAINT' (để tránh nhấp nháy). Nó cũng quan trọng để chỉ vẽ lên màn hình một lần để tránh nhấp nháy. Nếu bạn cần phải vẽ một cái gì đó ưa thích sử dụng bộ nhớ DC để vẽ đầu tiên. Cách tiện dụng để có được một [tại đây] (http://blogs.msdn.com/b/oldnewthing/archive/2011/05/20/10166505.aspx) – demorge
@demorge, nếu 'WM_PAINT' được dự kiến sẽ tự xóa , sau đó bạn phải trả về 'FALSE' từ' WM_ERASEBKGND'. – finnw