Bài giảng "Lập trình Windows - Chương 7: Kiến trúc Document/View" cung cấp cho người học các kiến thức:Giới thiệu Document/View, ứng dụng kiểu SDI, kiến trúc đa tài liệu - MDI.Mời các bạn cùng tham khảo nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình Windows - Chương 7: Kiến trúc Document/View (2016)Chương 7Kiến trúcDocument/View17.1. Giới thiệu document/viewMột ứng dụng theo kiến trúc document/viewLớp ứng dụng - CTLớp cửa sổ - CSLớp quan sát - CVLớp tài liệu - CD27.1. Giới thiệu document/view...Các đặc điểm của kiến trúc tài liệu/quan sát- Tính độc lập dữ liệu, tài liệu của chương trình.- Tính độc lập của khung nhìn đối với cửa sổ chương trình.- Tính gắn kết giữa tài liệu và khung nhìn.- Một khung nhìn một thời điểm chỉ làm việc được với một tài liệu, ngượclại một tài liệu có thể đồng thời được xử lý bởi nhiều khung nhìn.- Cho phép quản lý lưu trữ tài liệu chương trình một cách “trong suốt”thông qua kỹ thuật Serialize gắn kết với tài liệu. Khái niệm về tạo lập động (dynamic create): là cơ chế cho phép tạo cácđối tượng từ các lớp không bằng câu lệnh lập trình. Phải sử dụng cácmacro sau để khai báo và định nghĩa cho các lớp tương ứng:DECLARE_DYNCREATE( class_name ),IMPLEMENT_DYNCREATE( class_name , base_name ),RUNTIME_CLASS( class_name ).37.1. Giới thiệu document/view...Có hai kiểu kiến trúc này: SDI (đơn tài liệu) và MDI (đa tài liệu)- Đơn tài liệu là chương trình chỉ xử lý một tài liệu tại một thời điểm.- Đa tài liệu cho phép xử lý nhiều tài liệu (trên nhiều khung nhìn) đồng thời. Minh họa SDI và MDI như sau:47.2. Ứng dụng kiểu SDIBước 1: Dẫn xuất để xây dựng lớp cung cấp cho chương trình:Lớp ứng dụng CT từ lớp CWinApp.Lớp khung cửa sổ CS từ lớp CFrameWnd.Lớp tài liệu CD từ lớp CDocument.Lớp CV từ lớp CView.Bước 2: Cho phép tạo lập động các lớp CS, CD và CV bằng cách sử dụngcác cặp macro DECLARE_DYNCREATE vàIMPLEMENT_DYNCREATE.Bước 3: Tạo một mẫu (template) để liên kết các lớp CS, CD và CV với nhauqua đối tượng lớp CSingleDocTemplate.Bước 4: Phân tích cú pháp và xử lý dòng lệnh bằng hàmParseCommandLineInfo().Bước 5: Nạp chồng một số hàm thành viên để thực hiện như:- Hàm lưu trữ và đọc tài liệuCObject :: Serialize()- Hàm vẽ tài liệu lên khung nhìnCView :: OnDraw(),...5