2010-05-09 13 views
10

cuối cùng Khi tôi đổi kích thước cửa sổ của mình, tôi muốn nói một phần khác của chương trình rằng cửa sổ của tôi đã thay đổi kích thước. Tôi đọc trên MSDN rằng:chụp WM_SIZE

WM SIZE Thông báo
Thông báo WM SIZE được gửi đến cửa sổ sau khi kích thước của nó đã thay đổi.

Tuy nhiên, tôi nhận được WM_SIZE ngay cả khi kéo. Tôi nhận thấy rằng cũng có một tin nhắn WM_SIZING được gửi khi cửa sổ của tôi thay đổi kích thước. Tại thời điểm này tôi không thấy sự khác biệt giữa WM_SIZE và WM_SIZING.

Có cách nào tôi có thể chụp tin nhắn WM_SIZE cuối cùng, không phải là "spam" chương trình của tôi có thay đổi kích thước thư không?

Trả lời

17

Khi bạn bắt đầu kéo một cửa sổ, hệ thống sẽ đi vào một vòng lặp di chuyển/thay đổi kích thước phương thức; nó không trở lại vòng lặp tin nhắn của riêng bạn cho đến khi hành động kéo kết thúc. Bạn vẫn nhận được WM_SIZE vì nó được gửi trực tiếp đến quy trình cửa sổ, nhưng nó không chảy qua vòng lặp tin nhắn của riêng bạn.

Khi bắt đầu hành động kéo phương thức như vậy, hệ thống sẽ gửi WM_ENTERSIZEMOVE đến quy trình cửa sổ của bạn. Khi bạn nhả nút chuột, ứng dụng của bạn sẽ nhận được WM_EXITSIZEMOVE. Đó có lẽ là tin nhắn bạn muốn kích hoạt.

+0

Giả sử tôi thay đổi kích thước rất nhiều và tôi cần chụp tất cả các kích thước này. Tôi sử dụng tin nhắn nào? – bluejamesbond

+0

@ mk1: sử dụng WM_SIZE – dns