1. Cài đặt (Setup)
1.1. Visual C++ 6.0
2. Cửa sổ làm việc (Window)
2.1. Khởi động-Open,Thoát-Exit
Giới thiệu - Là 1 trình biên dịch, giúp người lập trình viên viết ra các chương trình ứng dụng trên Windows …
Khởi động-
Open
- Click chọn nút nút > chọn > chọn Microsoft Visual Studio 6.0 > chọn Microsoft
Visual C++ 6.0 .
Thoát-Exit
2.2. Giao diện (Interface)
Thanh trình đơn-Menu
bar
Thanh công cụ-Tool bar * Thanh công cụ Chuẩn-Standard
* Thanh công cụ WizardBar: Hiển thị các lớp đang sử dụng và các hàm đang sử dụng trong
lớp đó.
* Thanh công cụ Build MiniBar: Biên dịch và chạy chương trình.
* Thanh công cụ Điều khiển-Control Toolbar: Thiết kế giao diện chương trình.
* Khung panel Vùng làm việc-Workspace
- Thẻ : Hiển thị dạng cây các lớp, hàm, biến sử dụng trong chương trình.
+ Lớp-Class .
+ Hàm-Function .
+ Biến-Variable .
- Thẻ : Hiển thị các thành phần của chương trình:
+ Dialog: Cửa sổ hộp thoại.
+ Icon: Biểu tượng.
+ Menu: Thanh trình đơn.
+ Toolbar: Thanh công cụ.
+ String Table: Bảng chuỗi.
+ Accelerator: Phím tắt.
+ Version: Phiên bản.
- Thẻ : Hiển thị dạng cây các file chương trình:
+ Resource Files: File mã nguồn chương trình.
+ Header Files: File hỗ trợ biên dịch chương trình.
+ Resource Files: File tài nguyên chương trình.
GV: Nguyễn Viết Nam
Mở ứng dụng đã lưu-Open
1
* Khung panel Thông báo-Output: Thông báo kết quả khi biên dịch và chạy chương trình.
Ấn phím Alt + 2
Vùng làm việc-
Workspace
* Vùng soạn thảo: Thiết kế giao diện và viết mã chương trình.
3. Dự án (Project) - DPW
Tạo mới-New * Mở hộp thoại New:
Click chọn menu > chọn New.
Ấn phím Ctrl + N.
- Sau đó xuất hiện hộp thoại New:
* Ứng dụng Windows:
- Chọn thẻ > chọn mục ở khung danh sách.
- Nhập tên ứng dụng vào hộp .
- Chọn vị trí lưu ở hộp .
- Chọn nút .
- Chọn:
+ Hộp : Để tạo ứng dụng dạng tài liệu đơn.
+ Hộp : Để tạo ứng dụng dạng tài liệu đa.
GV: Nguyễn Viết Nam
Khởi động-Open
Tạo 1 ứng dụng mới, dùng tên tạm-New
Lưu ứng dụng-Save
Viết chương trình-Coding
Chạy chương trình-Compile Viết chương trình tiếp-Coding next
Cập nhật ứng dụng-Save
Lưu 1 bản sao của ứng dụng-Save as
Đóng-Close
Mở ứng dụng đã lưu-Open
2
+ Hộp : Để tạo ứng dụng dạng hộp thoại.
- Chọn nút .
- Chọn nút .
- Khi đó VC++ 6.0 tạo ra:
+ Ứng dụng tài liệu đơn:
+ Ứng dụng tài liệu đa:
GV: Nguyễn Viết Nam
3
+Ứng dụng hộp thoại:
- Trong đó:
+ Các file vùng làm việc *.dsw (workspace) và dự án *.dsp (project) .
+ Các file mã nguồn chương trình *.cpp và StdAfx.cpp .
+ Các file hỗ trợ biên dịch StdAfx.h , *.pch.
+ File tài nguyên chương trình *.rc .
+ File thông tin lớp *.clw.
+ Thư mục chương trình biên dịch Debug.
+ Thư mục tài nguyên res.
* Ứng dụng Dòng lệnh-Console:
C1: Chọn thẻ > chọn mục > chọn hộp > khi đó VC6
tạo ra:
+ Các file vùng làm việc *.dsw (workspace) và dự án *.dsp (project) .
+ Các file mã nguồn chương trình *.cpp và StdAfx.cpp .
+ Các file hỗ trợ biên dịch StdAfx.h , *.pch.
+ Thư mục chương trình biên dịch Debug.
C2: Chọn thẻ > chọn mục .
GV: Nguyễn Viết Nam
4
Lưu trữ-Save
* Cập nhật ứng dụng:
C1: Click chọn menu > chọn Save Workspace.
C2: Click chọn menu > chọn Save All.
* Cập nhật file mã nguồn:
Click chọn menu > chọn Save.
Ấn phím Ctrl + S.
Chạy chương
trình-Compile
* Biên dịch-Compile:
C1: Click chọn nút Build .
C2: Click chọn menu > chọn Build hay Rebuild All.
Ấn phím F7.
* Chạy-Run:
C1: Click chọn nút Execute Program .
C2: Click chọn menu > chọn Execute.
Ấn phím Ctrl + F5.
Đóng-Close
* Đóng ứng dụng:
Click chọn menu > chọn Close Workspace.
Mở-Open
* Mở hộp thoại Open:
C1: Click chọn nút Open .
C2: Click chọn menu > chọn Open.
Ấn phím Ctrl + O.
- Sau đó xuất hiện hộp thoại Open:
- Chọn mục Workspace (*.dsw, *.mdp) ở hộp .
- Chọn vị trí lưu ứng dụng cần mở ở hộp .
- Chọn tên ứng dụng cần mở ở khung danh sách bên dưới rồi chọn .
4. Giao diện (Interface)
4.1. Trình đơn-Menu (CWnd,CMenu)
Thiết kế-Design
Tạo-Create
Vẽ-Draw Tài liệu đơn, đa
(Single, Multiple
Document)
- Có sẵn menu là .
Hộp thoại (Dialog) - Mở hộp thoại hộp thoại Insert Resource:
Click chọn menu > chọn Resource.
Ấn phím Ctrl + R.
- Sau đó xuất hiện hộp thoại Insert Resource:
GV: Nguyễn Viết Nam
Biên dịch-Compile Chạy-Run Biên dịch,Chạy-Compile,Run
Chạy từng bước-Debug
5
- Chọn mục ở khung danh sách Resource Type > chọn nút
.
- Khi đó xuất hiện menu mới là trong khung
Workspace ở thẻ Resource View.
Viết mã-Coding
Trình đơn ngữ cảnh-
Context Menu
- Giống Menu.
Gán Thuộc tính- Assign Properties
Thiết kế-
Design
* Nhập menu:
- Double Click lên menu là trong khung Workspace ở thẻ .
- Click chuột phải lên vùng trống của menu > chọn Properties.
- Sau đó xuất hiện hộp thoại Menu Properties của menu như hình sau:
+ Nhập tên định danh của menu ở hộp .
- Chọn vùng và nhập menu.
- Sau đó xuất hiện hộp thoại Menu Item Properties của menu như hình sau:
+ Nhập nhãn hiển thị của menu ở hộp . VD: Tap tin.
- Tiếp theo chọn vùng bên cạnh để nhập menu cùng cấp hay menu con.
+ Chọn hộp nếu muốn tạo đường ngăn cách các mục menu.
- Rồi ấn phím Enter.
- Ấn phím ESC để hủy bỏ gán thuộc tính.
* Kết nối menu với hộp thoại (Dialog):
Tài liệu đơn, đa
(Single, Multiple
Document)
- Menu đã kết nối sẵn.
Hộp thoại (Dialog)
- Click chuột phải lên Hộp thoại-Dialog > chọn Properties > chọn tên định danh
của menu ở hộp . VD: IDR_MENU.
- Lưu ý: tên định danh của từng menu được tạo tự động theo cú pháp
ID_TênMenu_TênMenuCon.
Viết mã-
Coding
Trình đơn
ngữ cảnh-
Context
Menu
- Giống Menu.
GV: Nguyễn Viết Nam
6
Lập trình-Progarmming
Khai báo biến-
Variable Declaration
Chèn Thông điệp-
Add Message
- Double Click lên menu là trong khung Workspace ở thẻ .
- Click chuột phải lên menu > chọn ClassWizard.
Tài liệu đơn, đa
(Single, Multiple
Document)
- Đã có sẵn.
Hộp thoại (Dialog)
- Xuất hiện hộp thoại Adding a Class:
- Chọn hộp > chọn OK.
- Chọn lớp Dlg (ví dụ Cbai1Dlg) trong khung
.
- Chọn thẻ > sau đó xuất hiện hộp thoại MFC ClassWizard như hình sau:
Tài liệu đơn, đa
(Single, Multiple
Document)
- Chọn lớp View (ví dụ Cbai1View) ở hộp
.
Hộp thoại (Dialog)
- Chọn tên định danh của menu ở khung Object IDs > chọn thông điệp ở khung Messages:
GV: Nguyễn Viết Nam
7
Thông điệp Ý nghĩa sự kiện
COMMAND Nhấp chuột
UPDATE_COMMAND_UI Cập nhật menu
- Chọn nút > sau đó xuất hiện hộp thoại Add Member Fucntion.
+ Đặt tên hàm cho hộp nhập liệu ở hộp . Các trường hợp đặt tên
hàm:
Thông điệp Tên hàm Ví dụ
COMMAND OnMenuMenuCon OnTaptinMo
UPDATE_COMMAND_UI OnUpdateMenuMenuCon OnUpdateTaptinMo
- Chọn nút để xóa hàm.
- Chọn nút để viết mã lệnh trong hàm như sau:
Thông điệp Mã
COMMAND
void CTen_Ung_DungDlg::OnMenuMenuCon()
{
// TODO: Add your control notification handler code here
}
UPDATE_COMMAND_UI
void CTen_Ung_DungView::OnUpdateMenuMenuCon(CCmdUI*
pCmdUI)
{
// TODO: Add your command update UI handler code
here
if(…)
pCmdUI->SetCheck(1);
else
pCmdUI->SetCheck(0);
}
Trình đơn ngữ cảnh-
Context Menu
- Mở hộp thoại MFC ClassWizard.
- Chọn thẻ > sau đó xuất hiện hộp thoại MFC ClassWizard như hình sau:
- Chọn tên định danh của Hộp thoại-Dialog ở khung Object IDs > chọn thông điệp ở khung
Messages:
Thông điệp Ý nghĩa sự kiện
WM_CONTEXTMENU Nhấp chuột phải lên Dialog
- Chọn nút .
- Chọn nút để xóa hàm.
- Chọn nút để viết mã lệnh trong hàm như sau:
void CTen_Ung_DungDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
}
Viết mã-Coding
Lập trình- - Ví dụ-Example:
GV: Nguyễn Viết Nam
8
Progarmming void CMenuDlg::OnPheptinhCong()
{
// TODO: Add your command handler code here
UpdateData(TRUE);
m_c = m_a + m_b;
UpdateData(FALSE);
checkPT(MNU_CONG);
}
void CMenuDlg::OnPheptinhTru()
{
// TODO: Add your command handler code here
UpdateData(TRUE);
m_c = m_a - m_b;
UpdateData(FALSE);
checkPT(MNU_TRU);
}
void CMenuDlg::OnPheptinhNhan()
{
// TODO: Add your command handler code here
UpdateData(TRUE);
m_c = m_a * m_b;
UpdateData(FALSE);
checkPT(MNU_NHAN);
}
void CMenuDlg::OnPheptinhChia()
{
// TODO: Add your command handler code here
UpdateData(TRUE);
if(m_b!=0)
{
m_c = m_a / m_b;
UpdateData(FALSE);
checkPT(MNU_CHIA);
}
else
MessageBox("Loi chia 0");
}
void CMenuDlg::OnPheptinhKetthuc()
{
// TODO: Add your command handler code here
OnOK();
}
CWnd::SetMenu
Mục đích
(Purpose)
Sets the menu to the specified menu.
Đặt một thanh menu vào cửa sổ.
Cú pháp
(Syntax)
BOOL SetMenu(
CMenu* pMenu
);
Ví dụ
(Example)
CWnd::GetMenu
Mục đích
(Purpose)
Retrieves a pointer to the menu for this window.
Hàm trả về con trỏ quản lý thanh Menu của một cửa
sổ.
Cú pháp
(Syntax)
CMenu* GetMenu( ) const;
Ví dụ
(Example)
CMenu::GetSubMenu
Mục đích
(Purpose)
Retrieves a pointer to a pop-up menu.
Trả về một con trỏ đối tượng CMenu của một popup
menu.
Cú pháp CMenu* GetSubMenu(
GV: Nguyễn Viết Nam
9
(Syntax)
int nPos
) const;
Ví dụ
(Example)
CMenu::TrackPopupMenu
Mục đích
(Purpose)
Displays a floating pop-up menu at the specified
location and tracks the selection of items on the pop-
up menu.
Hiển thị một popup menu tại một vị trí xác định.
Cú pháp
(Syntax)
BOOL TrackPopupMenu(
UINT nFlags,
int x,
int y,
CWnd* pWnd,
LPCRECT lpRect = 0
);
Ví dụ
(Example)
void CMenuDlg::OnContextMenu(CWnd* pWnd,
CPoint point)
{
// TODO: Add your message handler code
here
CMenu* pMenu = GetMenu();
CMenu* pSubMenu = pMenu-
>GetSubMenu(0);
pSubMenu-
>TrackPopupMenu(TPM_LEFTALIGN |
TPM_RIGHTBUTTON, point.x, point.y, this);
}
CMenu::LoadMenu
Mục đích
(Purpose)
Loads a menu resource from the application's
executable file and attaches it to the CMenu object.
Nạp và gắn kết một thanh menu vào một đối tượng
thuộc lớp CMenu.
Cú pháp
(Syntax)
BOOL LoadMenu(
LPCTSTR lpszResourceName
);
BOOL LoadMenu(
UINT nIDResource
);
Ví dụ
(Example)
CMenu::CheckMenuItem
Mục đích
(Purpose)
Adds check marks to or removes check marks from
menu items in the pop-up menu.
Đặt dấu Check hay loại bỏ dấu Check cho một mục
chọn trên thanh menu.
Cú pháp
(Syntax)
UINT CheckMenuItem(
UINT nIDCheckItem,
UINT nCheck
);
Ví dụ
(Example)
void CMenuDlg::checkPT(UINT menu_id)
{
CMenu* pMenu = GetMenu();
pMenu->CheckMenuItem(MNU_CONG,
MF_UNCHECKED);
pMenu->CheckMenuItem(MNU_TRU,
MF_UNCHECKED);
pMenu->CheckMenuItem(MNU_NHAN,
MF_UNCHECKED);
pMenu->CheckMenuItem(MNU_CHIA,
MF_UNCHECKED);
pMenu->CheckMenuItem(menu_id,
MF_CHECKED);
}
CMenu::EnableMenuItem
Mục đích
(Purpose)
Enables, disables, or dims a menu item.
Enables, Disables một mục chọn trên thanh menu.
Cú pháp
(Syntax)
UINT EnableMenuItem(
UINT nIDEnableItem,
GV: Nguyễn Viết Nam
10
UINT nEnable
);
Ví dụ
(Example)
4.2. Cửa sổ-Dialog~Lớp-Class
Thuộc tính-Property .h
Phương thức-Method .cpp
4.2.1. Modal (CDialog)
Thiết kế-Design
Tạo-Create
Vẽ-Draw
* Mở hộp thoại hộp thoại Insert Resource:
Click chọn menu > chọn Resource.
Ấn phím Ctrl + R.
- Sau đó xuất hiện hộp thoại Insert Resource:
- Chọn mục ở khung danh sách Resource Type > chọn nút .
- Khi đó xuất hiện Hộp thoại-Dialog mới là trong khung Workspace ở thẻ Resource
View.
Viết mã-
Coding
Gán Thuộc tính- Assign Properties
Vẽ-Draw
- Double Click lên Hộp thoại-Dialog là trong khung Workspace ở thẻ Resource View.
- Click chuột phải lên Hộp thoại-Dialog > chọn Properties.
- Sau đó xuất hiện hộp thoại Dialog Properties như hình sau:
+ Nhập tên định danh của Hộp thoại-Dialog ở hộp . VD:
IDC_DIALOG_MODAL.
+ Nhập tiêu đề của Hộp thoại-Dialog ở hộp . VD: Modal.
- Rồi ấn phím Enter.
- Ấn phím ESC để hủy bỏ gán thuộc tính.
Viết mã-
Coding
Lập trình-Progarmming
Khai báo biến-Variable
Declaration
- Click chuột phải lên Hộp thoại-Dialog > chọn ClassWizard.
- Xuất hiện hộp thoại Adding a Class:
GV: Nguyễn Viết Nam
11
- Chọn hộp để tạo lớp mới > chọn nút .
- Tiếp theo xuất hiện hộp thoại New Class:
- Nhập tên lớp vào hộp theo cú pháp là
CTên_Lớp.
Chèn Thông điệp-Add Message
Viết mã-Coding
Viết mã-
Coding
CDialog::DoModal
Mục đích
(Purpose)
Call this member function to invoke the modal dialog box and return
the dialog-box result when done.
Cú pháp
(Syntax)
virtual INT_PTR DoModal( );
Ví dụ
(Example)
Tài liệu đơn, đa
(Single, Multiple
Document)
- Copy dòng include “CHocvien.h” của
lớp Học viên .cpp vào lớp View .cpp
Hộp thoại (Dialog)
- Copy dòng include “CHocvien.h” của
lớp Học viên .cpp vào lớp Dlg .cpp
CHocvien dlg;
dlg.DoModal();
CModal dlg;
CString s;
dlg.m_hoten="Tran HAo";
dlg.m_diem=5;
if(dlg.DoModal()==IDOK){
m_list.InsertItem(0,dlg.m_hoten);
s.Format("%d",dlg.m_diem);
m_list.SetItemText(0,1,s);
}
OnInitDialog
Mục đích
(Purpose)
This member function is called in response to the WM_INITDIALOG
message.
Cú pháp
(Syntax)
virtual BOOL OnInitDialog();
Ví dụ
(Example)
BOOL CWidth::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_slider.SetRange (1,20);
GV: Nguyễn Viết Nam
12
m_slider.SetPos (mWidth);
m_static.Format ("%d",m_slider.GetPos ());
UpdateData (FALSE);
return TRUE; // return TRUE unless you set the focus
to a control
// EXCEPTION: OCX Property Pages should
return FALSE
}
4.2.2. Modeless (CDialog)
Thiết kế-Design
Tạo-Create
Vẽ-Draw
* Mở hộp thoại hộp thoại Insert Resource:
Click chọn menu > chọn Resource.
Ấn phím Ctrl + R.
- Sau đó xuất hiện hộp thoại Insert Resource:
- Chọn mục ở khung danh sách Resource Type > chọn nút .
- Khi đó xuất hiện Hộp thoại-Dialog mới là trong khung Workspace ở thẻ Resource
View.
Viết mã-
Coding
Gán Thuộc tính- Assign Properties
Vẽ-Draw
- Double Click lên Hộp thoại-Dialog là trong khung Workspace ở thẻ Resource View.
- Click chuột phải lên Hộp thoại-Dialog > chọn Properties.
- Sau đó xuất hiện hộp thoại Dialog Properties như hình sau:
+ Nhập tên định danh của Hộp thoại-Dialog ở hộp . VD:
IDC_DIALOG_MODAL.
+ Nhập tiêu đề của Hộp thoại-Dialog ở hộp . VD: Modal.
- Rồi ấn phím Enter.
- Ấn phím ESC để hủy bỏ gán thuộc tính.
Viết mã-
Coding
Lập trình-Progarmming
Khai báo biến-Variable
Declaration
- Click chuột phải lên Hộp thoại-Dialog > chọn ClassWizard.
- Xuất hiện hộp thoại Adding a Class:
GV: Nguyễn Viết Nam
13
- Chọn hộp để tạo lớp mới > chọn nút .
- Tiếp theo xuất hiện hộp thoại New Class:
- Nhập tên lớp vào hộp theo cú pháp là
CTên_Lớp.
Chèn Thông điệp-Add Message
Viết mã-Coding
Viết
mã-
Coding
CWnd::GetParent
Mục đích
(Purpose)
Call this function to get a pointer to a child window's parent window (if
any).
Cú pháp
(Syntax)
CWnd* GetParent( ) const;
Ví dụ
(Example)
Tài liệu đơn,
đa
(Single,
Multiple
Document)
- Copy dòng include “CHocvien.h” của lớp Học
viên .cpp vào lớp View .cpp
Hộp thoại
(Dialog)
- Copy dòng include “CDialogModeless.h” của
lớp Modeless .cpp vào lớp Dialog cha .h sau
dòng // ModeLessDlg.h : header file
- Tạo con trỏ thuộc lớp Dialog Modeless (ví dụ
CModeless* dlg_ml;) trong lớp Dialog cha .h sau
dòng //Construction
- Trong hàm OnInitDialog() của Dialog cha .cpp,
nhập:
dlg_ml= new CModeless;
dlg_ ml-
>Create(IDD_DIALOG_MODELESS,this);
- Gọi Dialog:
dlg_ml->ShowWindow(SW_SHOW);
CDialogCha *pDlgCha;
pDlgCha=(CdialogModeless*)GetParent();
pDlgCha->
Serialize
Tạo 1 lớp dẫn xuất từ lớp Cobject. - Lớp CDiem
Trong lớp CDiem.h
DECLARE_SERIAL(CDiem);
void Serialize(CArchive& ar);
GV: Nguyễn Viết Nam
14
Trong lớp CDiem.cpp
// Construction/Destruction
IMPLEMENT_SERIAL(CDiem, CObject,1)
- Sự kiện Serialize của lớp View rồi copy qua cho lớp CDiem.cpp
void CDiem::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
ar << m1 << m2 << mWidth << mColor;
}
else
{
// TODO: add loading code here
ar >> m1 >> m2 >> mWidth >> mColor;
}
}
Trong lớp Doc.h
- Trong phương thức Serialize tại dòng cuối:
mDS.Serialize(ar);
- Trong file cpp:
IMPLEMENT_SERIAL(CDiem, CObject,1)
…
void CDiem::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
ar << m1 << m2 << type << color;
}
else
{
// TODO: add loading code here
ar >> m1 >> m2 >> type >> color;
}
}
CFont (CFontDialog)
Thiết kế-Design
Tạo-Create
Vẽ-Draw
Viết mã-Coding
Gán Thuộc tính- Assign Properties
Vẽ-Draw
Viết mã-Coding
Lập trình-Progarmming
Khai báo biến-Variable Declaration
Chèn Thông điệp-Add Message
Viết mã-Coding
Viết mã-
Coding
CFont::DeleteObject
Mục đích
(Purpose)
Deletes the attached Windows GDI object from memory
by freeing all system storage associated with the
Windows GDI object.
Cú pháp
(Syntax)
BOOL DeleteObject( );
Ví dụ
(Example)
CFontDialog::GetCurrentFont
Mục đích
(Purpose)
Call this function to assign the characteristics of the
currently selected font to the members of a LOGFONT
structure.
Cú pháp
(Syntax)
void GetCurrentFont(
LPLOGFONT lplf
GV: Nguyễn Viết Nam
15
);
Ví dụ
(Example)
LOGFONT
Mục đích
(Purpose)
The LOGFONT structure defines the attributes of a font.
Cú pháp
(Syntax)
typedef struct tagLOGFONT {
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT, *PLOGFONT;
Ví dụ
(Example)
CFontDialog::GetColor
Mục đích
(Purpose)
Call this function to retrieve the selected font color.
Cú pháp
(Syntax)
COLORREF GetColor( ) const;
Ví dụ
(Example)
CFont::CreateFontIndirect
Mục đích
(Purpose)
Initializes a CFont object with the characteristics given
in a LOGFONT structure pointed to by lpLogFont.
Cú pháp
(Syntax)
BOOL CreateFontIndirect(
const LOGFONT* lpLogFont
);
Ví dụ
(Example)
CFontDialog dlg;
CFont mFont;
LOGFONT font;
COLORREF color;
if(dlg.DoModal()==IDOK){
mFont.DeleteObject ();
dlg.GetCurrentFont(&font);
color=dlg.GetColor();
mFont.CreateFontIndirect(&font);
m_static_font.SetFont(&mFont);
}
4.3. Nút-Button (CButton,CWnd)
Giới thiệu-
Introduction
- Là phím nổi để người sử dụng ấn chuột vào đó và thực hiện một sự kiện nào đó. Nút lệnh có thể
được cài hình ảnh lên nó và được viết text lên đó.
Thiết kế-Design
Tạo-Create
Vẽ-Draw
- Click chọn nút Button trên thanh công cụ Điều khiển.
- Khi đó biểu tượng con trỏ chuột là > Click chọn trên Hộp thoại-Dialog để có nút là .
Viết mã-Coding
Gán Thuộc tính- Assign Properties
GV: Nguyễn Viết Nam
16
Thiết kế-
Design
- Click chuột phải lên nút trên Hộp thoại-Dialog > chọn Properties.
- Sau đó xuất hiện hộp thoại Push Button Properties của nút như hình sau:
+ Nhập tên định danh của nút ở hộp . VD: IDC_BUTTON_HELLO.
+ Nhập nhãn hiển thị của nút ở hộp . Có thể nhập dấu & trước kí tự
tắt. VD: Say Hello.
+ Bỏ chọn hộp nếu muốn ẩn nút.
+ Chọn hộp nếu muốn vô hiệu hóa nút.
- Rồi ấn phím Enter.
- Ấn phím ESC để hủy bỏ gán thuộc tính.
Viết mã-
Coding
Lập trình-Progarmming
Khai báo biến-
Variable Declaration
- Click chuột phải lên nút trên Hộp thoại-Dialog > chọn ClassWizard.
- Chọn thẻ > sau đó xuất hiện hộp thoại MFC ClassWizard như hình sau:
- Chọn tên định danh của nút ở khung Control IDS > chọn nút > xuất hiện hộp
thoại Add Member Variable như hình sau:
+ Nhập tên biến hay tên đối tượng vào hộp . VD:
m_button_hello.
+ Chọn là đối tượng ở hộp , thì chọn lớp ở hộp .
Kiểu Giải nghĩa
CButton Lớp nút
- Chọn nút để xóa biến hay xóa đối tượng.
Chèn Thông điệp-Add - Mở hộp thoại MFC ClassWizard.
GV: Nguyễn Viết Nam
17
Message
- Chọn thẻ > sau đó xuất hiện hộp thoại MFC ClassWizard như hình sau:
- Chọn tên định danh của nút ở khung Object IDs > chọn thông điệp ở khung Messages:
Thông điệp Ý nghĩa sự kiện
BN_CLICKED Nhấp chuột
BN_DOUBLECLICKED Nhấp đúp chuột
- Chọn nút > sau đó xuất hiện hộp thoại Add Member Fucntion như hình sau:
+ Đặt tên hàm cho nút ở hộp . Các trường hợp đặt tên hàm:
Thông điệp Tên hàm Ví dụ
BN_CLICKED OnButton OnButtonHello
- Chọn nút để xóa hàm.
- Chọn nút để viết mã lệnh trong hàm như sau:
void CTen_Ung_DungDlg::OnButtonTen_Nut()
{
// TODO: Add your control notification handler code here
}
Viết mã-Coding
Lập trình-
Progarmming
CWnd:: GetDlgItem
Mục đích
(Purpose)
Retrieves a pointer to the specified control or child
window in a dialog box or other window.
Cú pháp
(Syntax)
CWnd* GetDlgItem(
int nID
) const;
void GetDlgItem(
int nID,
HWND* phWnd
) const;
Ví dụ
(Example)
CButton*
pButton=(CButton*)GetDlgItem(IDC_BUTTON1);
CWnd::IsWindowEnabled
Mục đích
(Purpose)
Hàm trả về khác 0 nếu cửa sổ Enable.
Cú pháp
(Syntax)
BOOL IsWindowEnabled( ) const;
Ví dụ
(Example)
CWnd::EnableWindow
Mục đích
(Purpose)
Enables or disables mouse and keyboard input.
Enable (TRUE) hoặc Disable (FALSE) một cửa sổ.
Cú pháp
(Syntax)
BOOL EnableWindow(
BOOL bEnable = TRUE
GV: Nguyễn Viết Nam
18
);
Ví dụ
(Example)
CButton*
pButton2=(CButton*)GetDlgItem(IDC_BUTTON2);
if(pButton2->IsWindowEnabled())
pButton2->EnableWindow(FALSE);
else pButton2->EnableWindow(TRUE);
CWnd::IsWindowVisible
Mục đích
(Purpose)
Enables or disables mouse and keyboard input.
Hàm trả về khác 0 nếu cửa sổ Visible.
Cú pháp
(Syntax)
BOOL IsWindowVisible( ) const;
Ví dụ
(Example)
CButton*
pButton2=(CButton*)GetDlgItem(IDC_BUTTON2);
if(pButton2->IsWindowEnabled())
pButton2->EnableWindow(FALSE);
else pButton2->EnableWindow(TRUE);
CWnd::ShowWindow
Mục đích
(Purpose)
Sets the visibility state of the window.
Đặt trạng thái Visible của cửa sổ (SW_HIDE: ẩn cửa
sổ, SW_SHOW: hiện cửa sổ).
Cú pháp
(Syntax)
BOOL ShowWindow(
int nCmdShow
);
Ví dụ
(Example)
CButton*
pButton3=(CButton*)GetDlgItem(IDC_BUTTON3);
if(pButton3->IsWindowVisible())
pButton3->ShowWindow(SW_HIDE);
else pButton3->ShowWindow(SW_SHOW);
CWnd::SetWindowText
Mục đích
(Purpose)
Sets the window's title to the specified text.
Đặt tiêu đề cho một cửa sổ.
Cú pháp
(Syntax)
void SetWindowText(
LPCTSTR lpszString
);
Ví dụ
(Example)
CButton*
pButton3=(CButton*)GetDlgItem(IDC_BUTTON3);
if(pButton3->IsWindowVisible())
pButton3->ShowWindow(SW_HIDE);
else pButton3->ShowWindow(SW_SHOW);
CWnd::GetWindowText
Mục đích
(Purpose)
Copies the CWnd caption title (if it has one) into the
buffer pointed to by lpszStringBuf or into the destination
string rString.
Sao chép nội dung tiêu đề của cửa sổ và chứa vào
thành phần thuộc kiểu chuỗi (LPTSTR hoặc CString).
Cú pháp
(Syntax)
int GetWindowText(
LPTSTR lpszStringBuf,
int nMaxCount
) const;
void GetWindowText(
CString& rString
) const;
Ví dụ
(Example)
CButton*
pButton4=(CButton*)GetDlgItem(IDC_BUTTON4);
pButton4->SetWindowText("Nut 4");
4.4. Nhãn-Static Text (CString,CStatic)
Giới thiệu-
Introduction
- Là điều khiển được đưa vào để hiển thị dòng văn bản tới người sử dụng. Người sử dụng sẽ không
thể thay đổi văn bản hay tương tác với điều khiển, nó xem như một điều khiển chỉ đọc. Tuy nhiên bạn
dễ dàng có thể thay đổi dòng văn bản hiển thị bởi điều khiển khi chương trình đang chạy qua mã lệnh
bạn tạo cho ứng dụng.
Thiết kế-Design
Tạo-Create
GV: Nguyễn Viết Nam
19
Vẽ-Draw
- Click chọn nút Static Text trên thanh công cụ Điều khiển.
- Khi đó biểu tượng con trỏ chuột là > Click chuột trên hộp thoại (Dialog) để có nhãn là .
Viết mã-Coding
Gán Thuộc tính- Assign Properties
Thiết kế-Design
- Click chuột phải lên nhãn trên Hộp thoại-Dialog > chọn Properties.
- Sau đó xuất hiện hộp thoại Text Properties của nhãn như hình sau:
+ Nhập tên định danh của nhãn ở hộp . VD: IDC_STATIC_GIOITHIEU.
+ Nhập nhãn hiển thị của nhãn ở hộp . VD: Visual C++ 6.0.
+ Bỏ chọn hộp nếu muốn ẩn nhãn.
+ Chọn hộp nếu muốn vô hiệu hóa nhãn.
- Chọn thẻ > xuất hiện hộp thoại Edit Properties như hình sau:
+ Chọn hộp để cho nhãn hiển thị chuỗi.
- Rồi ấn phím Enter.
- Ấn phím ESC để hủy bỏ gán thuộc tính.
Viết mã-Coding
Lập trình-Progarmming
Khai báo biến-Variable
Declaration
- Click chuột phải lên nhãn trên Hộp thoại-Dialog > chọn ClassWizard.
- Chọn thẻ > sau đó xuất hiện hộp thoại MFC ClassWizard như hình sau:
- Chọn tên định danh của nhãn ở khung Control IDS > chọn nút > xuất hiện hộp
thoại Add Member Variable như hình sau:
GV: Nguyễn Viết Nam
20
+ Nhập tên biến hay tên đối tượng vào hộp . VD:
m_static_hoten.
+ Chọn là biến ở hộp , thì chọn kiểu dữ liệu ở hộp
.
Kiểu Giải nghĩa
CString Kiểu chuỗi
+ Nếu chọn là đối tượng ở hộp , thì chọn lớp ở hộp
.
Kiểu Giải nghĩa
CStatic Lớp chuỗi
- Chọn nút để xóa biến hay xóa đối tượng.
Chèn Thông điệp-Add
Message
Lập trình-
Progarmming
Viết mã-Coding
Lập trình-
Progarmming
- Hàm Format(): giống hàm printf của C.
void __cdecl Format(
UINT nFormatID,
[, argument]
);
void __cdecl Format(
PCXSTR pszFormat,
[, argument]
);
CString::Format
Mục đích
(Purpose)
Writes formatted data to a CStringT in the same way that
sprintf formats data into a C-style character array.
Cú pháp
(Syntax)
void __cdecl Format(
UINT nFormatID,
[, argument]
);
void __cdecl Format(
PCXSTR pszFormat,
[, argument]
);
Ví dụ
(Example)
m_static. Format ("%d",m_slider.GetPos ());
UpdateData (FALSE)
CStatic::SetFont
Mục đích
(Purpose)
Sets the window's current font to the specified font.
Cú pháp
(Syntax)
void SetFont(
CFont* pFont,
BOOL bRedraw = TRUE
);
Ví dụ
(Example)
GV: Nguyễn Viết Nam
21
4.5. Hộp nhập liệu-Edit Text (CEdit)
Giới thiệu-Introduction - Là hộp soạn thảo cho phép người sử dụng nhập hay thay đổi văn bản.
Thiết kế-Design
Tạo-Create
Vẽ-Draw
- Click chọn nút Edit Text trên thanh công cụ Điều khiển.
- Khi đó biểu tượng con trỏ chuột là > Click chọn trên Hộp thoại-Dialog để có hộp nhập liệu là
.
Viết mã-
Coding
Gán Thuộc tính- Assign Properties
Thiết kế-
Design
- Click chuột phải lên hộp nhập liệu trên Hộp thoại-Dialog > chọn Properties.
- Sau đó xuất hiện hộp thoại Edit Properties của hộp nhập liệu như hình sau:
+ Nhập tên định danh của hộp nhập liệu ở hộp . VD:
IDC_BUTTON_HOTEN.
+ Bỏ chọn hộp nếu muốn ẩn hộp nhập liệu.
+ Chọn hộp nếu muốn vô hiệu hóa hộp nhập liệu.
- Chọn thẻ > xuất hiện hộp thoại Edit Properties như hình sau:
+ Chọn hộp để quy định thuộc tính chỉ đọc kết quả.
- Rồi ấn phím Enter.
- Ấn phím ESC để hủy bỏ gán thuộc tính.
Viết mã-
Coding
Lập trình-Progarmming
Khai báo biến-
Variable Declaration
- Click chuột phải lên hộp nhập liệu trên Hộp thoại-Dialog > chọn ClassWizard.
- Chọn thẻ > sau đó xuất hiện hộp thoại MFC ClassWizard như hình sau:
- Chọn tên định danh của hộp nhập liệu ở khung Control IDs > chọn nút > xuất hiện
GV: Nguyễn Viết Nam
22
hộp thoại Add Member Variable như hình sau:
+ Nhập tên biến hay tên đối tượng vào hộp . VD:
m_edit_hoten.
+ Nếu chọn là biến ở hộp , thì chọn kiểu dữ liệu ở hộp
.
Kiểu Giải nghĩa
CString Kiểu Chuỗi
int Kiểu số nguyên
UINT Kiểu số nguyên (không dấu)
long Kiểu số nguyên dài
DWORD Kiểu số nguyên dài
float Kiểu số thực ngắn
double Kiểu số thực dài
BYTE Kiểu số nguyên ngắn (không dấu)
short Kiểu số nguyên ngắn
BOOL Kiểu luận lý
COleDateTime Kiểu ngày giờ
COleCurrency Kiểu tiền tệ
+ Nếu chọn là đối tượng ở hộp , thì chọn lớp ở hộp
.
Kiểu Giải nghĩa
CEdit Lớp nhập liệu
- Chọn nút để xóa biến hay xóa đối tượng.
Chèn Thông điệp-
Add Message
- Mở hộp thoại MFC ClassWizard.
- Chọn thẻ > sau đó xuất hiện hộp thoại MFC ClassWizard như hình sau:
- Chọn tên định danh của hộp nhập liệu ở khung Object IDs > chọn thông điệp ở khung
Messages:
Thông điệp Ý nghĩa sự kiện
GV: Nguyễn Viết Nam
23
- Chọn nút > sau đó xuất hiện hộp thoại Add Member Fucntion như hình sau:
+ Đặt tên hàm cho hộp nhập liệu ở hộp . Các trường hợp đặt tên
hàm:
Thông điệp Tên hàm Ví dụ
- Chọn nút để xóa hàm.
- Chọn nút để viết mã lệnh trong hàm như sau:
void CTen_Ung_DungDlg::On()
{
// TODO: Add your control notification handler code here
}
Viết mã-Coding
Lập trình-
Progarmming
CStringT::MakeReverse
Mục đích
(Purpose)
Reverses the order of the characters in the
CStringT object.
Đảo chuỗi
Cú pháp
(Syntax)
CStringT& MakeReverse();
Ví dụ
(Example)
UpdateData(TRUE);
m_edit2=m_edit1;
m_edit2.MakeReverse();
UpdateData(FALSE);
4.6. Khung nhóm-Group Box
Thiết kế-Design
Tạo-Create
Vẽ-Draw
- Click chọn nút Group Box trên thanh công cụ Điều khiển.
- Khi đó biểu tượng con trỏ chuột là > Click chọn trên Hộp thoại-Dialog để có khung nhóm là
.
Viết mã-
Coding
Gán Thuộc tính- Assign Properties
Thiết kế-
Design
- Click chuột phải lên khung nhóm trên Hộp thoại-Dialog > chọn Properties.
- Sau đó xuất hiện hộp thoại Group Box Properties của khung nhóm như hình sau:
+ Nhập tên định danh của khung nhóm ở hộp . VD:
IDC_STATIC_GIOITINH.
+ Nhập nhãn hiển thị của khung nhóm ở hộp . VD: Gioi Tinh.
+ Chọn hộp nếu muốn vô hiệu hóa khung nhóm.
+ Bỏ chọn hộp nếu muốn ẩn khung nhóm.
+ Chọn hộp nếu muốn vô hiệu hóa khung nhóm.
- Chọn thẻ > xuất hiện hộp thoại Group Box Properties như hình sau:
GV: Nguyễn Viết Nam
24
+ Chọn hộp nếu muốn khung nhóm lõm xuống.
- Rồi ấn phím Enter.
- Ấn phím ESC để hủy bỏ gán thuộc tính.
Viết mã-
Coding
Lập trình-Progarmming
Khai báo biến-Variable Declaration
Chèn Thông điệp-Add Message
Viết mã-Coding
Lập trình-Progarmming
4.7. Hộp lựa chọn-Radio Box (CButton)
Giới thiệu-
Introduction
- Là hộp nhỏ hình vuông để người dùng ấn chuột vào dấu (x) hoặc không có dấu (x). Nó kiểm tra
giá trị chọn hay không không chọn (on/off).
Thiết kế-Design
Tạo-Create
Quy tắc
- Tạo 1 Group Box và chọn thuộc tính của nó.
- Tạo Radio Box đầu tiên, chọn thuộc tính và gán giá trị 0 cho nó.
- Tạo các Radio Box khác.
Vẽ-Draw
- Click chọn nút Radio Box trên thanh công cụ Điều khiển.
- Khi đó biểu tượng con trỏ chuột là > Click chọn trên Hộp thoại-Dialog để có hộp lựa chọn là
.
Viết mã-
Coding
Gán Thuộc tính- Assign Properties
Thiết kế-
Design
- Click chuột phải lên hộp lựa chọn trên Hộp thoại-Dialog > chọn Properties.
- Sau đó xuất hiện hộp thoại Radio Button Properties của hộp lựa chọn như hình sau:
+ Nhập tên định danh của hộp lựa chọn ở hộp . VD:
IDC_RADIO_GIOITINH.
+ Nhập nhãn hiển thị của hộp lựa chọn ở hộp . VD: Say Hello.
+ Chọn hộp để tạo nhóm cho các hộp lựa chọn.
+ Bỏ chọn hộp nếu muốn ẩn hộp lựa chọn.
+ Chọn hộp nếu muốn vô hiệu hóa hộp lựa chọn.
- Rồi ấn phím Enter.
- Ấn phím ESC để hủy bỏ gán thuộc tính.
Viết mã-
Coding
Lập trình-Progarmming
Khai báo biến-
Variable Declaration
- Click chuột phải lên hộp lựa chọn trên Hộp thoại-Dialog > chọn ClassWizard.
- Chọn thẻ > sau đó xuất hiện hộp thoại MFC ClassWizard như hình sau:
GV: Nguyễn Viết Nam
25