Báo cáo bài tập lớn môn Hệ điều hành: Tìm hiểu lập trình API trong Window

20 5 0
Báo cáo bài tập lớn môn Hệ điều hành: Tìm hiểu lập trình API trong Window

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Báo cáo bài tập lớn môn Hệ điều hành: Tìm hiểu lập trình API trong Window có kết cấu nội dung gồm 3 phần. Trong đó, phần mở đầu giới thiệu chung, phần 2 giới thiệu sơ lược về Window API, phần 3 đề cập đến một số thành phần cơ bản của ứng dụng. Đề tài Hoàn thiện công tác quản trị nhân sự tại Công ty TNHH Mộc Khải Tuyên được nghiên cứu nhằm giúp công ty TNHH Mộc Khải Tuyên làm rõ được thực trạng công tác quản trị nhân sự trong công ty như thế nào từ đó đề ra các giải pháp giúp công ty hoàn thiện công tác quản trị nhân sự tốt hơn trong thời gian tới.

ĐẠI HỌC BÁCH KHOA HÀ NỘI Khoa Công Nghệ Thông Tin BÁO CÁO BÀI TẬP LỚN MÔN HỆ ĐIỀU HÀNH Đề tài : Tìm hiểu lập trình API windows 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 Giáo viên hướng dẫn :  6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b Nhóm sinh viên thực hiện : f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 Nguyễn Tuấn Anh Trần Quốc Huy Chu Gia Khơi Vũ Hồng Qn Hồng Thanh Tùng 20080075 20081166 20081409 20082128 20082997 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 Mục lục I.MỞ ĐẦU: II, SƠ BỘ WINDOW API, CÁCH THỨC LÀM VIỆC Các thư viện lập trình Windows SDK – Software Development Kit: Các khái niệm bản: 3 Các thành phần giao diện đồ họa (GUI – Graphics User Interface) 4 Qui trình hoạt động chương trình ứng dụng: 5 Ví dụ III, MỘT SỐ THÀNH PHẦN CƠ BẢN 11 Tài nguyên ứng dụng (Resources) 11 Một số kiểu liệu mới: 12 Một số hàm đồ họa sở: 13 3.1 Nhóm hàm vẽ 13 3.2 Nhóm hàm miền 15 4.HỘP THOẠI VÀ ĐIỀU KHIỂN 15 4.1 Hộp thoại 15 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e 4.2Thiết kế hộp thọai .16 e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 4.3Các kiểu điều khiển .17 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 4.4 Thủ tục xử lý hộp thọai 18 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 4.5 Hộp thoại trạng thái 18 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca 4.6 Hộp thoại không trạng thái 19 e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 IV.Kết luận 20 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 I.MỞ ĐẦU: Các ứng dụng Windows dễ sử dụng, khó người tạo lập chúng Để đạt tính dễ dùng địi hỏi người lập trình phải bỏ nhiều cơng sức để cài đặt Lập trình Windows khó phức tạp nhiều so với lập trình DOS Tuy nhiên lập trình Windows giải số vấn đề khó khăn mơi trường DOS xây dựng giao diện người dùng, quản lý nhớ ảo, độc lập thiết bị vào ra, thâm nhập Internet, khả chia sẻ tài nguyên, Windows cung cấp hàm để người lập trình thâm nhập đặc trưng hệ điều hành gọi giao diện lập trình ứng dụng (Application Programming Interface – API) Những hàm đặt thư viện liên kết động (Dynamic Link Library – DLL) Các chương trình ứng dụng sử dụng chúng thơng qua lời gọi hàm chia sẻ máy có cài đặt Windows 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 II, SƠ BỘ WINDOW API, CÁCH THỨC LÀM VIỆC Các thư viện lập trình Windows SDK – Software Development Kit: - Là thư viện lập trình tảng HĐH Windows - Cung cấp tất công cụ cần thiết để xây dựng ứng dụng Windows - Được sử dụng thư viện sở để tạo thư viện cao cấp ngơn ngữ lập trình VD: OWL BorlandC, MFC Visual C++,… - Một số thành phần SDK: • Win32 API • GDI/GDI+ • Windows Multimedia • OpenGL • DirectX • COM/COM+ • ADO (ActiveX Data Object) • OLE DB •… 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b Các khái niệm bản: f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b Message: Trao đổi thơng tin chương trình ứng dụng hệ điều hành 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 Thủ tục Window: Được gọi hệ thống để xử lý Message nhận 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 Hàng đợi Message: Mỗi chương trình có hàng đợi Message để chứa Message Mỗi chương trình có vịng lặp Message df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b Handle: Một giá trị 32 bits không dấu (unsigned) HĐH tạo để làm định danh cho đối tượng (cửa sổ, file, vùng nhớ, menu,…) 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 ID (Identifier): Một giá trị nguyên ứng dụng tạo để làm định danh cho đối tượng (menu item, control) 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 Instance: Một giá trị nguyên HĐH tạo để định danh thể thực thi ứng dụng Callback: Thuộc tính hàm/ thủ tục gọi HĐH, ứng dụng Các thành phần giao diện đồ họa (GUI – Graphics User Interface) Các dạng GUI bản: - SDI – Single Document Interface: + Một cửa sổ làm việc + Cho phép thay đổi kích thước cửa sổ (Resizeable) + Khơng có cửa sổ + Ví dụ: NotePad, Paint,… - MDI – Multi Document Interface: + Một cửa sổ làm việc (Frame window) nhiều cửa sổ (Child window) + Cho phép thay đổi kích thước cửa sổ (Resizeable) + Cho phép Maximize/Minimize/Close cửa sổ + Ví dụ: Word, Excel, VC++,… 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b - Dialog: + Một cửa sổ làm việc + Thường có kích thước cố định + Thường khơng có menu bar + Thường có button, edit box, list-box,… + Ví dụ: Calculator, CD Player,… dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 - Cửa sổ: - Định nghĩa: + Là vùng chữ nhật hình + Dùng để hiển thị kết output + Và nhận input từ người dùng - Công việc ứng dụng GUI tạo cửa sổ làm việc - Nguyên tắc quản lý: + Mô hình phân cấp: cửa sổ có cửa sổ cha (parent window), ngoại trừ cửa sổ Desktop 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 + Tại thời điểm, có cửa sổ nhận input từ user (Active/Focused window) - Phân loại: + Cửa sổ Desktop + Cửa sổ tiêu chuẩn + Cửa sổ hộp thoại (Dialog box) + Các control Qui trình hoạt động chương trình ứng dụng: - Cửa sổ hiển thị lên hình - Chờ cửa sổ gửi thông điệp - Các thông điệp Windows gửi trả lại chương trình ứng dụng thơng qua lời gọi hàm chúng chương trình ứng dụng - Khi nhận thơng điệp, chương trình ứng dụng gọi hàm API hàm riêng chúng để thực cơng việc mong muốn - Lập trình Windows lập trình sở thơng điệp, q trình trao đổi thơng tin điều khiển dựa thơng điệp Có nhiều thơng điệp phát sinh ngẩu nhiên nhấn phím hay chuột, chọn menu, - Tương tác ứng dụng với người sử dụng thông qua hay nhiều cửa sổ, tạo lập cửa sổ cần thiết quản lý thông tin 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b Ví dụ f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc #include LRESULT CALLBACK XulyMessage (HWND,UNIT,WPARAM,LPARAM); char szAppName [ ] = “Vidu”; int WINAPI WinMain (HANDLE hInst, HANDLE hPrevInst, LPSTR lpszCmdLine, int nCmdShow) { HWND hwnd; MSG msg; WNDCLASSEX wndclass; wndclass.cbSize = sizeof(wndclass); wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = XulyMessage; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInst; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor (NULL, IDC_ARROW); c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 wndclass.hbrBackground = GetStockObject (WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION); RegisterClassEx(&wndclass); hwnd = CreateWindow(szAppName, “Vi du mo dau”, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, HWND_DESKTOP, NULL, hInst, NULL); ShowWindow (hwnd, nCmdShow); UpdateWindow (hwnd); while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam; } LRESULT CALLBACK XulyMessage (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; RECT rect; switch (iMsg) { case WM_PAINT: hdc = BeginPaint (hwnd, &ps); GetClientRect (hwnd, &rect); DrawText (hdc, “Lap trinh C for Win”, -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint (hwnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc (hwnd, iMsg, wParam, lParam); } return 0; } 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 Ta khảo sát ví dụ để nắm nguyên lý hoạt động chúng Trên đoạn chương trình đơn giản Windows, chương trình hiển thị khung cửa sổ dịng chữ có nhiều lệnh mà cú pháp khó nhớ Do vậy, ngun tắc lập trình Windows chủ yếu chép chỉnh sửa nơi cần thiết dựa vào chương trình mẫu có sẵn a Hàm WinMain() thực hay cịn gọi điểm vào chương trình Ta thấy hàm có tham số: + hInst, hPrevinst: Chỉ số chương trình chúng chạy Vì Windows hệ điều hành đa nhiệm, có nhiều chương trình chạy vào thời điểm nên phải quản lý chặt chẽ chúng hInst số chương trình vừa khởi động, hPrevinst số khởi động trước chúng ln có giá trị NULL + lpszCmdLine: chứa địa đầu xâu ký tự đối số dòng lệnh + nCmdShow: Cho biết cách thức hiển thị cửa sổ chương trình khởi động Windows gán giá trị SW_SHOWNORMAL hay SW_SHOWMINNOACTIVE Các tham số hệ điều hành truyền vào 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 Định nghĩa lớp cửa sổ đăng ký với Windows + Lớp cửa sổ (window class): Là tập thuộc tính mà HĐH Windows sử dụng làm khuôn mẫu (template) tạo lập cửa sổ Mỗi lớp cửa sổ đặc trưng tên (class-name) dạng chuỗi Phân loại class: - Lớp cửa sổ hệ thống (System class): Được địnhnghĩa trước HĐH Windows Các ứng dụng hủy bỏ - Lớp cửa sổ ứng dụng định nghĩa: Được đăng ký ứng dụng Có thể hủy bỏ khơng cịn sử dụng - Lớp tồn cục ứng dụng (Application global class) - Lớp cục ứng dụng (Application local class) Mỗi cửa sổ thuộc lớp xác định 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 Khi lần đầu chạy, ứng dụng phải định nghĩa đăng ký lớp với cửa sổ (Window Class) Đây cấu trúc liệu mô tả tính chất cửa sổ, ta gán giá trị ban đầu cho thành phần cấu trúc lớp cửa sổ, bao gồm: Kích thước, kiểu, địa hàm xử lý thông điệp cửa sổ, định nghĩa hình dạng cho trỏ chuột (cursor) biểu tượng (Icon), màu nền, tên lớp cửa sổ struct WNDCLASSEX { 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; }; + Sau định nghĩa thành phần lớp cửa sổ ta phải đăng ký lớp cửa sổ với hệ điều hành (RegisterClassEX) ATOM RegisterClassEx (CONST WNDCLASSEX *lpWClass); với: Kiểu giá trị ATOM định nghĩa window.h WORD; lpWClass trỏ đến cấu trúc lớp cửa sổ; hàm trả số lớp cửa sổ +Có hai nguyên nhân dẫn đến việc đăng ký cửa sổ thất bại: - Trùng tên ứng dụng hệ điều hành - Không đủ nhớ + Tạo lập cửa sổ làm việc (Frame Window) - Sau đăng ký thành cơng ta tạo lập cửa sổ thông qua hàm CreateWindow() HWND CreateWindow ( LPCSTR lpClassName, LPCSTR lpWinName, DWORD dwStyle, int X, int Y, int Width, int Height, HWND hParent, HMENU hMenu, HINSTANCE hInst, LPVOID lpszAdditional); 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 - Gọi hàm ShowWindow()để hiển thị cửa sổ BOOL ShowWindow (HWND hwnd, int nShow); với: hwnd số cửa sổ cần hiển thị nShow cách thức hiển thị cửa sổ, tham số nhận giá trị lần hàm WinMain() 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 - Để thông báo cho ứng dụng biết phải vẽ lại vùng làm việc cửa sổ, ta phải gọi hàm UpdateWindow() yêu cầu Windows gửi thông điệp đến hàm xử lý thông điệp cửa sổ 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 + Vịng lặp thơng điệp - Khi nhấn phím hay chuột, Windows chuyển đổi kiện thành thơng điệp đặt vào hàng đợi thơng điệp Vịng lặp thơng điệp có nhiệm vụ nhận xử lý thông điệp hàng đợi - TranslateMessage: Dịch thông điệp sang dạng tiêu chuẩn - DispatchMessage: Phân phối thông điệp đến hàm xử lý thông điệp tương ứng b Thủ tục xử lý thông điệp + Nhận xử lý thơng điệp chương trình + Một chương trình có nhiều thủ tục window + Một lớp cửa sổ khai báo thủ tục window + Các thông điệp sau xử lý nên trả giá trị + Dạng tổng quát: LRESULT CALLBACK WndProc( HWND hWnd, //handle window nhận message UINT message, //ID thông điệp (tên thông điệp) WPARAM wParam, //thamsố thứ message (WORD) LPARAM lParam) //thamsố thứ hai message (LONG) { switch (message) { case WM_COMMAND: return 0; case WM_PAINT: return 0; case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(hWnd, message, wParam, lParam); 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 } 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b } f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 Thông điệp WM_PAINT: Cập nhật lại thơng tin vẽ hình 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 Các trạng thái xuất thông điệp WM_PAINT: i Tạo cửa sổ Hiển thị Cập nhật CreateWindow ShowWindow UpdateWindow ii Xuất hộp thoại (Dialog box), thông báo (Message box) làm che phần toàn cửa sổ, hộp thoại đóng phải gọi WM_PAINT để vẽ lại cửa sổ 10 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 iii Khi thay đổi kích thước cửa sổ WS_HREDRAW | WS_VREDRAW iv Cửa sổ minimize ,maximize HDC: (Handle to a device context) đến ngữ cảnh thiết bị gồm thiếtbị phần cứng trình điều khiển thiết bị BeginPaint: Lấy ngữ cảnh thiết bị EndPaint: Giải phóng ngữ cảnh thiết bị Thông điệp WM_DESTROY: + Xuất người dùng chọn nút close cửa sổ nhấn Alt+F4 + Nhiệm vụ PostQuitMessage đặt thông điệp WM_QUIT vào hàng đợi 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 11 III, MỘT SỐ THÀNH PHẦN CƠ BẢN Tài nguyên ứng dụng (Resources) + Là đối tượng (object) sử dụng ứng dụng (VD: menu bar, dialog, bitmap, icon, cursor, …) + Được định nghĩa bên thêm vào file thi hành ứng dụng biên dịch (linking) + Các dạng resource: 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 12 Một số kiểu liệu mới: 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 13 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc Một số hàm đồ họa sở: c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 3.1 Nhóm hàm vẽ 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 ™ + COLORREF GetPixel(HDC hDC, int nXPos, int nYPos); Lấy giá trị màu vị trí (nXPos, nYPos) hDC, trả -1 điểm nằm vùng hiển thị ™ +COLORREF SetPixel(HDC hDC, int nXPos, int nYPos, COLORREF clrRef); Vẽ điểm màu clrRef vị trí (nXPos, nYPos) lên hDC Giá trị trả màu điểm (nXPos, nYPos) -1 điểm nằm vùng hiển thị ™ +DWORD MoveToEx(HDC hDC, int x, int y); Di chuyển bút vẽ đến tọa độ (x, y) hDC Giá trị trả tọa độ cũ bút vẽ, x = LOWORD, y = HIWORD 14 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 ™ +BOOL LineTo(HDC hDC, int xEnd, int yEnd); Vẽ đoạn thẳng từ vị trí hành đến vị trí (xEnd, yEnd) hDC Hàm trả TRUE thành công, FALSE thất bại ™ +BOOL Polyline(HDC hDC, const POINT FAR *lpPoints, int nPoints); Vẽ đường gấp khúc lên hDC đoạn thẳng liên tiếp, số đỉnh nPoints với tọa độ đỉnh xác định lpPoints Hàm trả TRUE thành công, FALSE thất bại ™ +BOOL Polygon(HDC hDC, const POINT FAR *lpPoints, int nPoints); Vẽ đa giác có nPoints đỉnh, tọa độ đỉnh xác định lpPoints Hàm trả TRUE thành công, FALSE thất bại ™ +BOOL Rectangle(HDC hDC, int left, int top, int right, int bottom); Vẽ hình chữ nhật có tọa độ left, top, right, bottom lên hDC ™ +HPEN CreatePen(int penStyle, int penWidth, COLORREF penColor); Tạo bút vẽ có kiểu penStyle, độ dày nét vẽ penWidth, màu penColor Hàm trả handle bút vẽ thành công trả NULL thất bại Các giá trị penStyle sau : 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 3.2 Nhóm hàm miền ™ HBRUSH CreateSolidBrush(COLORREF cRef); Tạo mẫu tơ đặc với màu cRef ™ HBRUSH CreateHatchBrush(int bStyle, COLORREF cRef); Tạo mẫu tô dạng lưới kiểu bStyle với màu cRef Các kiểu bStyle : HS_HORIZONTAL HS_VERTICAL HS_FDIAGONAL 15 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 HS_BDIAGONAL HS_CROSS HS_DIAGCROSS ™ BOOL FloodFill(HDC hDC, int xStart, int yStart, COLORREF cRef); Tơ màu vùng kín, màu đường biên cRef ™ BOOL ExtFloodFill(HDC hDC, int xStart, int yStart, COLORREF cRef, UINT fillStyle); Tơ màu vùng kín, fillStyle định cách tô : - FLOODFILLBORDER : Tô màu vùng có màu đường biên cRef -FLOODFILLSURFACE : Tơ vùng có màu cRef 4.HỘP THOẠI VÀ ĐIỀU KHIỂN 4.1 Hộp thoại Hộp thoại phối hợp người sử dụng với chương trình số phần tử điều khiển mà phần tử nhận nhiệm vụ thu nhận thông tin từ người dùng cung cấp thông tin đến người dùng người dùng tác động đến phần tử điều khiển Các phần tử điều khiển nhận cửa sổ cha hộp thoại Các phần tử điều khiển thường Button, List Box, Combo Box, Check Box, Radio Button, Edit Box, Scroll Bar, Static ™ Hộp thoại trạng thái (modal) ™ Hộp thoại không trạng thái (modeless) Hộp thoại thông dụng (common dialog) 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b 4.2Thiết kế hộp thọai f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc Ví dụ: c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 196, 102 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION CAPTION "Logon" 16 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "OK",IDOK,24,81,50,14 PUSHBUTTON "Cancel",IDCANCEL,109,81,50,14 LTEXT "User name",IDC_STATIC,7,23,40,15 LTEXT "Password",IDC_STATIC,7,50,40,16 EDITTEXT DC_EDT_NAME,52,19,137,16,ES_AUTOHSCROLL EDITTEXT IDC_EDT_PASSWORD, 52, 48, 137, 16, ES_AUTOHSCROLL END 4.3Các kiểu điều khiển 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 Các kiểu điều khiển khai báo resource script có dạng 17 sau, ngoại trừ kiểu điều khiển LISTBOX, COMBOBOX, SCROLLBAR, EDITTEXT Control-type "text", id, xPos, yPos, xWidth, yHeight, iStyle Các kiểu điều khiển LISTBOX, COMBOBOX, SCROLLBAR, EDITTEXT khai báo resource script với cấu trúc khơng có trường "text" Thêm thuộc tính cho kiểu điều khiển cách thay đổi tham số iStyle Ví dụ ta muốn tạo radio button với chuỗi diễn đạt nằm bên trái nút ta gán trường iStyle BS_LEFTTEXT cụ thể sau: RADIOBUTTON Radio1",IDC_RADIO1,106,10,53,15,BS_LEFTTEXT 4.4 Thủ tục xử lý hộp thọai ™ Đặc điểm : • Mỗi hộp thọai cần có thủ tục xử lý riêng • Các thơng điệp khơng gửi tới hàm xử lý cửa sổ • Là hàm xử lý cửa sổ ™ Mẫu hàm BOOL CALLBACK Tên hàm (HWND, UINT, WPARAM, LPARAM) ; • Có nhiều thơng điệp khác • Khơng cần xử lý WM_PAINT WM_DESTROY • Xử lý thơng điệp trả TRUE, khơng trả FALSE • Thường phải xử lý hai thơng điệp chính: WM_INITDIALOG WM_COMMAND: LOWORD(WPARAM) chứa ID điều khiển 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 4.5 Hộp thoại trạng thái 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b ™ Hiển thị hộp thoại INT_PTR DialogBox( HINSTANCE hInstance, // handle to module LPCTSTR lpTemplate, // dialog box template HWND hWndParent, // handle to owner window DLGPROC lpDialogFunc // dialog box procedure ); Ví dụ: DialogBox (hInstance, TEXT ("DIALOG1"), hwnd, DialogProc) ; ™ Gởi thông điệp đến hàm WndProc yêu cầu xử lý hộp thoại mở nhờ hàm SendMessage: SendMessage(GetParent(hDlg), message, wParam, lParam); 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 ™ Thêm tiêu đề cho hộp thoại: SetWindowText(hDlg,TEXT("Hello Dialog")); xử lý thông điệp WM_INITDIALOG 18 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 ™ Đóng hộp thoại BOOL EndDialog( HWND hDlg, // handle to dialog box INT_PTR nResult // value to return ); 4.6 Hộp thoại không trạng thái ™ Hiển thị hộp thoại HWND hDlgModeless=CreateDialog(hInstance, szTemplate, hwndParent, DialogProc); ShowWindow(hDlgModeless,SW_SHOW); while(GetMessage(&msg, NULL, 0, 0)) { if (hDlgModeless==0 || !IsDialogMessage (hDlgModeless, &msg); { TranslateMessage(&msg); DispatchMessage(&msg); } } while(GetMessage(&msg, NULL, 0, 0)) { if (hDlgModeless==0 || !IsDialogMessage(hDlgModeless, &msg); { if(TranslateAccelerator (hwnd, hAccel, &msg) { TranslateMessage(&msg); DispatchMessage(&msg); } } } ™ Đóng hộp thoại Đặt hDlgModeless giá trị BOOL DestroyWindow( HWND hWnd // handle to window to destroy ); 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 19 IV.Kết luận Sau thời gian làm việc chung , đóng góp ý kiến giúp đỡ lẫn tìm hiểu lập trình Windows API , chúng em thu kiến thức lập trình API Trong trình nghiên cứu ,chúng em nhận thấy lĩnh vực hay , đáng để nghiên cứu , học hỏi sâu Mặc dù cố gắng lần đầu tiếp xúc với lập trình Windows API nên chúng em khơng tránh khỏi sai sót Vì chúng em mong thầy góp ý thêm cho làm nhóm Một lần nữa, chúng em xin cảm ơn nhiệt tình thầy giáo giúp nhóm hồn thành tập lớn 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 20

Ngày đăng: 25/12/2023, 00:05

Tài liệu cùng người dùng

Tài liệu liên quan