2011-08-04 11 views
7

Để sửa đổi cửa sổ của một chương trình khác, tôi cần tìm một số SysTreeView32 cụ thể trong đó bằng cách sử dụng cuộc gọi API EnumChildWindows.Tại sao một số mục được tô xám trong chế độ xem Windows của Spy ++?

Khi tôi kiểm tra cửa sổ bằng cách sử dụng Spy ++, có một số của SysTreeView32 trong đó nhưng tất cả đều có màu xám, ngoại trừ một, là cái tôi đang tìm kiếm.

Bức tranh sau đây là một ví dụ về mục xám:

Why are some items grey?

Tại sao các khoản mục trình bày màu xám và những gì gọi API không Spy ++ sử dụng để biết liệu có nên xám ra một mục hay không?

Trả lời

15

Đó chỉ là các cửa sổ không hiển thị - ví dụ: HWND không có bộ bit kiểu WS_VISIBLE. Chúng thường là các cửa sổ công nhân - các cửa sổ chỉ tồn tại để xử lý các thông điệp khác nhau trong nền - hoặc trong một số trường hợp là giao diện người dùng chưa được hiển thị. Ví dụ, một cửa sổ cho phép bạn ẩn hoặc hiển thị thanh công cụ có thể chỉ ẩn nó bằng cách làm cho nó vô hình hơn là phá hủy nó và tạo lại nó sau này.

Trong trường hợp cụ thể của bạn, WorkerW có thể là trình giữ chỗ cho một số giao diện người dùng khác không cần thiết ngay bây giờ, trong khi msctl_statusbar32 trông giống như đó là thanh trạng thái ẩn.

+8

Cũng lưu ý rằng cửa sổ có thể chuyển sang màu xám ngay cả khi cửa sổ có WS_VISIBLE = true set - khi một trong các cha mẹ của nó có WS_VISIBLE = false. – levanovd