Mục đích của việc đăng ký lớp cửa sổ qua WNDCLASSEX
và RegisterClassEx()
khi tạo cửa sổ trong ứng dụng API Windows là gì?Mục đích của việc đăng ký các lớp cửa sổ là gì?
Trả lời
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ó.
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
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ó. –
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ì? –
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' –
- 1. Mục đích của việc tham chiếu đối tượng cửa sổ trong Javascript là gì?
- 2. Mục đích của lớp Expression là gì?
- 3. Mục đích của các lớp học một phần là gì?
- 4. Mục đích của UIWindow là gì?
- 5. C++ Mục đích của việc truyền là gì?
- 6. Mục đích của việc ném các lớp con ngoại lệ cụ thể là gì?
- 7. Mục đích của việc tạo các lớp sưu tập trong PHP là gì?
- 8. Mục đích của việc đặt tên lớp giữa các ký hiệu "Ít hơn" và "Lớn hơn" trong C# là gì?
- 9. Mục đích của cửa sổ Gọi ngăn xếp trong Visual Studio là gì?
- 10. Mục đích của việc có thành viên lớp là loại ref là gì?
- 11. Mục đích của việc hack JavaScript này là gì?
- 12. Mục đích của lớp TestExecution trong MSTest là gì?
- 13. Mục đích của (<$) trong lớp Functor là gì?
- 14. Mục đích của trình nạp lớp Java là gì?
- 15. Mục đích của phân đoạn đăng ký ở chế độ được bảo vệ x86 là gì?
- 16. Mục đích của character_set_connection là gì?
- 17. Mục đích của Parse Vexing là gì?
- 18. Mục đích của `__metaclass__ = type` là gì?
- 19. Mục đích của phương pháp Rollback trong mẫu Đơn vị công việc là gì?
- 20. Mục đích của String.IsInterned là gì?
- 21. Việc đăng ký một DLL là gì?
- 22. Mục đích của IntentSender là gì?
- 23. Mục đích của việc mở rộng lớp tuần tự Java là gì?
- 24. Mục đích của 'var' là gì?
- 25. Mục đích của is_uploaded_file() là gì?
- 26. Mục đích của config.assets.precompile là gì?
- 27. mục đích của Thread.holdsLock (khóa) là gì?
- 28. Mục đích của Rake là gì?
- 29. Mục đích của thư mục buildSrc của gradle là gì?
- 30. Mục đích của tệp vshost.exe là gì?
Giúp suy nghĩ về điều đó trong điều khoản C++. Window class == Lớp C++, CreateWindow == toán tử mới. –