Các KIẾN TRÚC Document & View
11.10.5 CÁC VÍ DỤ THỰC HAØNH:
Các kiến trúc Document & View 155
2 Thực hành 1: Viết ứng dụng như VD30. Tạo splitter trong CEmpFrame với hai view: bên trái là treeview (dùng lớp view kế thừa từ CTreeView), bên phải là list (dùng lớp view kế thừa từ ListView).
Tạo dự án VD35 tương tự VD30.
Đăng ký sử dụng CTreeView và CListView: Trong tập tin stdafh.h của dự án, bổ sung chỉ thị: #include <afxcview.h>
Bổ sung vào dự án hai lớp mới: CEmpTree kế thừa từ CTreeView CEmpList kế thừa từ CListView.
Cách thực hiện tương tự như đã làm với CEmpWnd, mục (5.4.1).
Khai báo đối tượng thuộc tính protected m_splitter kiểu CSplitterWnd. Hành vi OnCreateClient của CEmpFrame thực hiện khởi tạo và cài đặt các pane, view cần thiết:
BOOL CEmpFrame::OnCreateClient( LPCREATESTRUCT lpcs, CCreateContext* pContext ) { if (!CFrameWnd::OnCreateClient(lpcs, pContext)) return FALSE; m_splitter.CreateStatic(this, 1, 2); m_splitter.CreateView( 0, 0, RUNTIME_CLASS(CEmpTree), CSize(120,0), NULL ); m_splitter.CreateView(0,1, RUNTIME_CLASS(CEmpList), CSize(0,0), NULL ); return TRUE; }
2 Thực hành 2: Thực hiện ứng dụng tương tự VD35. Tự động thực hiện bổ sung ba phần tử trong treeview, mỗi phần tử có hai phần tử con. Các phần tử đều có hình minh họa cho trạng thái được chọn và không được chọn.
Tạo dự án VD36 tương tự VD35.
Bổ sung bitmap resource chứa hai ảnh cùng kích thước: . Đặt số hiệu cho bitmap resource là IDB_IMGTREE.
Hành vi OnCreate của CEmpTree đăng ký sử dụng ảnh và bổ sung các phần tử cần thiết:
156 Lập trình Windows với MFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com{ {
if (CTreeView::OnCreate(lpCreateStruct) == -1) return -1;
static CImageList img; // use only in this function img.Create(IDB_IMGTREE, 16, 2, RGB(255,255,255)); CTreeCtrl& myCtrl = GetTreeCtrl(); // Based control myCtrl.SetImageList(&img, TVSIL_NORMAL);
HTREEITEM hihi; // Add needed items hihi = myCtrl.InsertItem("Muc 1", 0, 1); myCtrl.InsertItem("Muc 11", 0, 1, hihi); myCtrl.InsertItem("Muc 12", 0, 1, hihi); hihi = myCtrl.InsertItem("Muc 2", 0, 1); myCtrl.InsertItem("Muc 21", 0, 1, hihi); myCtrl.InsertItem("Muc 22", 0, 1, hihi); hihi = myCtrl.InsertItem("Muc 3", 0, 1); myCtrl.InsertItem("Muc 31", 0, 1, hihi); myCtrl.InsertItem("Muc 321", 0, 1, myCtrl.InsertItem("Muc 32", 0, 1, hihi)); return 0; }
Hành vi kế thừa PreCreateWindow ấn định thông số dạng treeview: BOOL CEmpTree::PreCreateWindow(CREATESTRUCT& cs) { cs.style |= TVS_HASLINES|TVS_LINESATROOT|
TVS_HASBUTTONS;
return CTreeView::PreCreateWindow(cs); }
2Một số thông số ấn định dạng của treeview:
TVS_HASLINES : Treeview có đường nối giữa các mục. TVS_LINESATROOT : Đường nối từ gốc.
TVS_HASBUTTONS : Có nút mở , đóng mục.
TVS_SINGLEEXPAND : Cho phép mở 1 mục duy nhất ở mỗi lúc. TVS_xxx : Xem MSDN.
THỰC HAØNH:
Các kiến trúc Document & View 157
1. Tạo ứng dụng soạn thảo văn bản (text). Ứng dụng cho phép người dùng đặt password bảo vệ dữ liệu. Chỉ mở được dữ liệu nếu có password hợp lệ. 2. Tương tự bài tập 1 cho ứng dụng RTF view.
3. Viết ứng dụng HTMLView: Thanh công cụ rebar (như IE của Microsoft); Backward, Forward, hộp combobox nhập và ghi nhớ các URL đã nhập. 4. Phát triển VD36 thành ứng dụng cho phép xem cấu trúc ổ đĩa, cây thư mục trên máy như windows explorer.
HD: Xem hàm FindFirstFile() và FindNextFile().
5. Tạo cơ sở dữ liệu Access. Dùng bộ DVF (V = FormView) thích hợp để xem và cập nhật dữ liệu cho các bảng trong cơ sở dữ liệu.
6. Viết ứng dụng RTF View. Trong màn hình view, khi di chuyển chuột lên các nội dung có chỉnh dạng gạch dưới thì thực hiện chuyển dạng con chuột thành ,, ngược lại chỉnh dạng chuột về dạng mặc nhiên của hệ thống.
7. Viết ứng dụng thi trắc nghiệm đơn giản: Màn hình view rtf cho phép hiển thị văn bản chỉnh dạng và hình ảnh phản ánh nội dung của các câu hỏi và các đáp án lựa chọn. Hiển thị dấu chọn khi người dùng đánh dấu đáp án.
8. Quan sát chương trình tra cứu từ điển. Viết ứng dụng RTF view sử dụng một của sổ con kiểu CEdit. Khi thực hiện double trên một từ bất kỳ trong màn hình view rtf thì kích hoạt cửa sổ con và điền từ vừa chọn vào cửa sổ con này. Khi người dùng click vào view, cửa sổ con tự động biến mất.
9. Quan sát chương trình thi trắc nghiệm TOEFL. Viết ứng dụng như bài tập số 8, Khi thực hiện double trên một dòng bất kỳ trong màn hình view rtf thì kích hoạt cửa sổ con và điền nội dung dòng được chọn vào cửa sổ con này, Khi click vào cửa sổ view, nội dung chỉnh sửa được cập nhật vào view. 10. Quan sát Yahoo Messenger!. Thực hiện ứng dụng giao diện rtf như sau: