Lập trình trên Windows – 2

Tổng quan MFC
– Dùng Visual C++ 6 hoặc các bản Visual Studio
*THƯ VIỆN MFC:
– Thư viện các lớp, oop.
– Khi báo afxwin.h.
– Có các hàm toàn cục (các hàm có prefix là afx…).
– Gọi các hàm api dùng toán tử định phạm vi (::).

CÁC LOẠI FILE DO APPWIZARD SINH RA
phải có include “stdafx.h” trong mỗi file .cpp
SDI:
Lớp cơ sở:
+ CWinApp
+ CDocument
+ CView
+ CFrameWnd
Lớp dẫn xuất:
+ CBTApp
+ CBTDoc
+ CBTView
+ CMainFrame
File nguồn:
+ BT.cpp
+ BTDoc.cpp
+ BTView.cpp
+ MainFrm.cpp
File header:
+ BT.h
+ BTDoc.h
+ BTView.h
+ MainFrm.h
*MDI:
Lớp cơ sở:
+ CWinApp
+ CDocument
+ CView
+ CMDIFrameWnd
+ CMDIChildWnd
Lớp dẫn xuất:
+ CBTApp
+ CBTDoc
+ CBTView
+ CMainFrm
+ CChildFrm
File nguồn:
+ BT.cpp
+ BTDoc.cpp
+ BTView.cpp
……………
…………
File header:
+ BT.h
+ BTDoc.h
+ BTView.h
…………….
……………

LỚP APPLICATION
– Tên lớp là CWinApp.
khởi động (init) -> chạy (run) -> kết thúc.
– Chứa vòng lặp nhận message loop
– Mỗi ứng dụng có 1 và chì 1 đối tượng dẫn xuất từ lớp CWinApp (đối tượng này thường tên là theApp).
+ InitInstance() (khởi tạo instance). –> Run() (message loop ẩn dưới hàm run)—>exitInstance() (kết thúc ứng dụng).
*hàm updateWindows(): biến vùng client thành invalidate –> sinh ra WM_PAINT
LỚP CDOCUMENT:
– Chức năng là lưu dữ liệu
LỚP VIEW:
– Tên lớp là CView
– Quản lý hiển thị. (hàm onDraw đảm nhiệm cv này)
– Truyền / nhận thông tin sang lớp document.
Lớp FRAME:
– Lóp này mặc định là CMainFrame
– Tạo quản lý cửa sổ, toolbar, menu bar..
– Nó là cửa sổ mức cao nhất.

+SDI: CMainFrame dẫn xuất từ CMainWnd–> Tưởng tượng nếu bỏ phần client ra thì còn lại là main window.
+ MDI: tưởng tượng nếu như tắt cửa sổ con bên trong -> còn lại main frame. ….được dẫn xuất từ CMDIFrameWnd……………. CChildFrame dẫn xuất từ CMDIChildWnd……. gọi là MDI child frame window………….. Các window frame chứa các view.
*KIẾN TRÚC DOCUMENT/VIEW:
– Cốt lõi của ap MFC là:
đối tượng document lo việc lưu và nạp dữ liệu…. đối tượng lo việc trình bày..
– Mối tương quan giữa document và view là quan hệ 1 chiều –> 1 view gắn với 1 document.
– Để gắn chặt document, view và frame. MFC dùng document template

  • Lớp View có thể truy cập tới dữ liệu của document thông qua hàm CView::getDocument().
    thông thường sử dụng qua biến con trỏ CDocument:
    CBTView::onDraw(…){
    CDocument* p;
    p = new ……;
    }
  • Cập nhật lại tất cả các view dùng hàm updateAllView(NULL);
    (1) Tạo project có tên là “BaiTap” dạng SDI
    (2) Thêm biến vào lớp CBaiTapDoc như sau: kiểu CString, tên m_Hello, access modifier là public.

Hiệu chỉnh constructor của lớp CBT01Doc
m_Hello = _T(“xin chao”);
// _T: gọi là macro để tùy biến hoặc asscii hoặc unicode.

Chỉnh hàm onDraw()
pDc->Textout(10, 10, pDc->m_Hello);
XỬ LÝ MESSAGE TRONG MFC
thông qua hàm xử lý message gọi là mesage handler

WM_PAINT: OnPaint()
WM_SIZE: OnSize()
… các message handler có tên prefix là on…..
Mặc định OnPaint() sẽ tự động gọi OnDraw().
LỚP CSCROLLVIEW
chọn lớp cơ sở là CScrollView thay vì CView.
Để xác định kích thước theo đơn vị logic, ta chỉnh hàm ảo OnInitUpdate()

void OnInitUpdate()
SizeTotal có thể set khác 100
để thiết lập lấy vị trí của scrollview: CScrollView::getScrollPosition()….
………..

Advertisements

One thought on “Lập trình trên Windows – 2

  1. Pingback: Lập trình trên Windows | David Ng

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s