Tải bản đầy đủ (.pdf) (10 trang)

Các kĩ thuật của Visual C++.pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (41.57 KB, 10 trang )

B. CÁC KỸ THUẬT CỦA VISUAL C++ ĐƯC KHAI THÁC.
v Chương trình được viết trên môi trường Window bằng Visual C++.
v Đề tài chương trình được tạo bởi MFC AppWizard(exe) dựa trên Dialog-
Based.
v Khi tạo Dialog_Based sẽ không có các chức năng như Menu, Toolbar và
Status bar vì các lớp ứng dụng của Dialog-Based không có các chức năng
này. Sau khi AppWizard ta thấy có 3 lớp được tạo ra :
Ø CAboutDlg : Lớp Dialog liên quan tới Aboutbox.
Ø COngdauApp : lớp CWinApp dùng cho trọn ứng dụng.
Ø COngdauDlg : lớp CDialog dùng cho trọn ứng dụng.
v Lớp CObject():
(2)

Ø Lớp CObject chứa những chức năng cơ bản của lớp MFC. CObject
chứ những hàm thành viên hổ trợ cho việc cấp phát động ,yêu cầu
sản sinh hàng loạt (serialization), gán đối tượng và nhậ diện động
đối tượng vào lúc chạy chương trình .
v Lớp CCmdTarget():
Ø Lớp CCmdTarget này viết tắt chữ Class Command Target được dẫn
xuất từ CObject. Những lớp nào cần tiếp xúc với User và với hệ
điều hành thông qua các thông điệp và lệnh thì sẽ được thông qua
lớp CCmdTarget.
Ø Lớp CCmdTarget được xem như là lớp cơ sở liên quan đến cơ chế
message-map của MFC. Message-map sẽ hướng dẫn đường đi cho
các command(lệnh) hoặc message. Theo đònh nghóa người ta phân
biệt 1 command là 1 thông điệp xuất phát từ 1 mục chọn trình đơn, 1
nút điều khiển hoặc phím tắt , còn lại là thông điệp. Lớp nào dẫn
xuất từ lớp CCmdTarget đều có riêng 1 message map. Cho phép
mỗi lớp giải quyết những message liên quan đến phần quyền của
mình, để cho những thông điệp khác giải quyết bởi các lớp cấp cao
ở trên.


v Lớp CWnd():
Ø Lớp CWnd(class window) là lớp thừa kế của lớp CcmdTarget là 1
lớp khá quan trọng, cung cấp những chức năng cơ bản cho tất cả các
lớp cửa sổ,như các ô điều khiển(đây là 1 loại cửa sổ),các khung đối
thoại và view. Chỉ có những lớp dẫn xuất từ CWnd mới có thể nhận
được những thông điệp.
v CButton():
Ø CButton dược dẫn xuất từ lớp CWnd , cung cấp những chức năng cơ
bản của các nút điều khiển windows, nút điều khiền là1 cửa sổ con
cái nhỏ hình chữ nhật mà ta có thể bấm tắt cho ON hoặc OFF. Nút
điều khiển có thể được sử dụng 1 mình hoặc 1 nhóm và có thể mang
nhãn hoặc không.
Ø Các nút điều khiển điển hình là1 ô duyệt(check box), nút đài(radio
button),và nút ấn (pushbutton).
I. Lớp CWinApp:
v COngdauApp kế thừa lớp CWinApp.
v CwinApp viết tắt chữ Class Window Application theo sơ đồ dẫn xuất dưới
đây:









Ø CwinApp quản lý những công việc được đòi hỏi để khởi động ứng dụng
và mọi thể hiện của ứng dụng cũng như cũng như để chạy và kết thúc ứng
dụng MFC. Lớp CWinApp được xem là lớp ứng dụng cốt lõi của MFC.Ví

dụ ở đây COngdauApp là giao diện lo “việc đối ngoại” với Window khi
một tình huống nào đó xảy ra trong Window thì một thông điệp sẽ được
gởi đến cho chương trình (COngdauApp) để cho nó biết được cái gì đang
xảy ra .
Ø Ví dụ : 1 phím được ấn xuống thì thông điệp WM_KEYDOWN sẽ được
phát ra và chuyển cho COngdauApp và đến phiên chương trình sẽ khởi
động hàm giải quyết vấn đề này là OnKeyDown( ).
Ø SDI và MDI đi trước lớp này phủ quyết(override) hàm InitInstace( ), hàm
này khai báo 1 phủ quyết instance của lớp COngdauDlg thông qua lệnh :
CObject
CCmdTarget
CWinThread
CWinApp
COngdauApp
COngdauDlg dlg;
Rồi gọi hàm DoModal( ) để cho hiển thò khung đối thoại lên màn
hình rồi trả về IDOK nếu người sử dụng ấn nút OK hoặc trả về
IDCANCEL nếu ấn nút CANCEL.
Ø Hàm InitInstace trả về FALSE (nghóa là mọi phần khởi gán tạm ổn,cho chạy
phần ứng dụng ) vì đây là 1 ứng dụng Dialog_Based và khung đối thoại bò
đóng lại thì ứng dụng mới chấm dứt.
II. Lớp CDialog :
v COngdauDlg kế thừa lớp CDialog.
v CDialog viết tắt chữ class Dialog theo dẫn xuất từ các lớp dưới đây :












v Lớp CDialog là dẫn xuất từ lớp CWnd là lớp cơ sở được dùng để hiển
thò khung đối thoại lên màn hình.Thư viện MFC cung cấp những lớp Dialog
để hổ trợ những khung đối thoại thông dụng được cài sẵn (gọi là common
Dialog). Có nhiều loại khung đối thoại, mỗi loại khung đối thoại được dùng
cho mỗi mục đích khác nhau. Có các loại khung đối thoại sau:
II.1. Message box : khung thông báo dùng để hiển thi thông tin cho người
sử dụng biết.Ta có thể gọi nó như sau :
Ø Window API:
int MessageBox(HWND hwnd, // mục quản của cửa
sổ
// làm chủ
CObject
CCmdTarget
CWnd
CDialog
COngdauDlg
LPCTSTR lptzText // con trỏ chỉ về phần văn bản
LPCTSTR lpszCaption // con trỏ chỉ về phần tựa đề
UINT nType // kiểu message box
Ø MFC:
(1) int AfxMessageBox(LPCTSTR lptzText,UINT
nType=MB_OK,
UINT nIDHelp=0);
Dòng lệnh này sẽ tạo 1 message box với dấu chấm
than(!)trong 1 hình tam giác vàng .

(2) int AFXAPI AfxMessage(UINT nIDPrompt,
UINT nType=MB_OK,
UINT nIDHelp=(UINT)-1);
Ø Ý nghóa các thông số như sau:
_ lpszText : con trỏ chỉ về 1 đối tượng Cstring hoặc chuỗi
null-terminated chứa thông báo cần được hiển thò lên ô
thông báo.
_ nType : kiểu cách trình bày ô message box.
_ nIDHelp : Mã cảnh ứng help đối với thông báo; trò zero
cho biết sẽ sử dụng Help-context mặc nhiên của ứng dụng.
_ nIDPrompt : mã nhận điện ID duy nhất dùng để qui chiếu
về 1 chuỗi trong string table.
II.2. Modal Dialog Box :Khung đối thoại này là phổ biến nhất. Khi khung
đối thoại này khởi động,thì người sử dụng chỉ được phép nhập liệu mà
thôi, và phần còn lại ứng dụng sẽ bò khoá chặt không cho nhận thông
điệp cho tơiù khi khung đối thoại chấm dứt và biến mất.Với khung này
người sử dụng phải làm cho xong việc rồi đóng lại thì mới qua khung đối
thoại khác làm việc .Trước khi thêm khung đối thoại này vào ứng dụng
ta phải tạo chúng.Developer Studio đã đưa vào 1 trình đơn gọi là
dialogbox editor thuộc nhóm resource editor giúp ta xây dựng 1 dialog
resource.Sau đó class Wizard sẽ giúp ta tạo dialog class.
Ta triệu gọi hàm thành viên DoModal( ) của đối tượng
khung đối thoại để cho hiện lên màn hình.
II.3. Modeless dialog box:Khung đối thoại này xuất hiện và nằm lì trên màn
hình cho tới khi ta ra lệnh đóng lại.Trong khi khung đối thoại modeless
nằm trên màn hình,người sử dụng có thể nhảy qua khung đối thoại khác
làm việc rồi trở về khung modeless. Khác với khung modal, khung đối
thoại modeless cho phép ứng tiếp tục nhận và giải quyết thông điệp.
III. Các tập tin cơ bản :
(2)


v Như cách tạo trên ta có các tập tin sau:
Ø File.H : .h viết tắt chữ header.tập tin tiêu đề chính đối với chương trình (ví
dụ ở đây là tập tin Ongdau.h). Nó thường chứa những ký hiệu toàn cục và
các chỉ thò #include đối với các tập tin .h khác.Ngoài ra nó còn dẫn xuất
lớp CongdauApp từ lớp CWndApp.
Ø File.CPP : .cpp viết tắt chữ C Plus Plus, nghóa là C++.Đây là tập tin nguồn
còn gọi là tập tin “thiết đặt”(implementation file) của chương trình
chính(ví dụ: Ongdau.cpp). Nó sẽ tạo 1 đối tượng thuộc lớp COngdauApp
và phủ quyết hàm thành viên InitInstace( ).
Ø File.RC và RESOURCE.H:
Ø .RC viết tắt chữ Resource.File.rc là tập tin nguồn lực của dự án.
Ø RESOURCE.H là tập tin tiêu đề nguồn lực. Tập tin nguồn lực chứa những
trình đơn mặc nhiên và accelerator, stringtables đối với chương trình MFC.
Nói chung nó tạo ra thư mục \RES chứa các tập tin icon, bitmap và cursor.
Ø FileDLG.H &fileDLG.CPP : DLG viết tắt chữ Dialog.Những tập tin này
tạo ra do ta tạo dựa trên Dialog-Based.Các tập tin này sẽ sẫn xuất và cài
đặt lớp Dialog mang tên CfileDlg(Ví dụ :COngdauDlg),và cho bao gồm
khung sườn nhữn g hàm thành viên dùng khởi gán khung đối thoại và thực
hiện những trao đổi dữ liệu(data_exchange,DDX) giữa dialog với biến
thành viên lớp.
IV. Các hàm có liên quan:
(2)

• Hàm OnCommand() :
v CWnd:: OnCommand().
v Virtual BOOL OnCommand(WPARAM wParam,LPARAM lParam)
Ø Các thông số được giải thích như sau :

×