2011-12-14 31 views

Trả lời

5

Việc tách cửa sổ thuộc tính vào CreateWindow() cụ và RegisterClass() thứ đã được thực hiện từ rất sớm để cho phép việc tạo ra các thống nhất-hành xử các cửa sổ. Điều khiển hộp thoại (nút, hộp danh sách, v.v.) là một ví dụ chính - tất cả đều chia sẻ một lớp. Điều đó có nghĩa là - họ chia sẻ quy trình cửa sổ, điều đó có nghĩa - họ chia sẻ logic vẽ tranh, phản ứng đầu vào, thông báo tùy chỉnh, thông báo, v.v.

Ở cấp ứng dụng, trường hợp điển hình nhất khi bạn có nhiều cửa sổ cùng một lớp là tài liệu trong giao diện nhiều tài liệu. Đôi khi, mọi người giới thiệu các điều khiển dành riêng cho ứng dụng. Vì vậy, sự khác biệt phục vụ mục đích của nó.

5

Mục đích chính là cung cấp cho hệ thống quyền WndProc để gọi khi có thứ gì đó trong hàng đợi tin nhắn được xử lý.

Có một số cờ, nhưng điểm chính là ở trên.

lớp Window tương ứng với loại 'widgets' trên giao diện người dùng:

  • nút
  • hộp kiểm
  • cuộn
  • combobox
  • listbox

WndProc là duy nhất lái xe của hành vi của widge t.

Do đó các bản đồ: phụ tùng (loại điều khiển) ->wndclass ->WndProc

+0

Trong số những thứ khác, nó cũng được sử dụng để chỉ định một số thuộc tính cửa sổ như số lượng bộ nhớ cửa sổ bổ sung có sẵn cho ['GetWindowLongPtr()'] (http://msdn.microsoft.com/en-us/library/windows/desktop/ ms633585.aspx). Số byte cửa sổ bổ sung mà cửa sổ sử dụng được cố định khi bạn tạo nó. –

+0

Có lý do lịch sử nào để đăng ký lớp cửa sổ riêng biệt không? Về mặt lý thuyết, WndProc() có thể được chuyển như một phần của CreateWindow(). Mục đích của việc đăng ký trên hệ thống cửa sổ là gì? –

+0

Có một số cơ chế cho phép bạn đăng ký các lớp cửa sổ trên toàn cầu và sử dụng chúng trong bất kỳ ứng dụng nào từ thời điểm đó. Trong thực tế, mọi điều khiển cửa sổ tích hợp đều được đăng ký theo cách đó. Tôi không nhớ chi tiết cụ thể, nhưng bạn có thể tra cứu 'wndclass toàn cầu' –

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