Các trường hợp đặt tên hàm: COMMAND OnMenuMenuCon OnTaptinMoUPDATE_COMMAND_UI OnUpdateMenuMenuCon OnUpdateTaptinMo // TODO: Add your control notification handler code here} UPDATE_COMMAN
Trang 1Thanh 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
Trang 2* 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.
Tạo mới-New * Mở hộp thoại New:
Click chọn menu > chọn New.
+ 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.
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
Trang 3+ 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
Trang 4+Ứ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
Trang 5Lư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.
Ấ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)
- 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
Trang 6- 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
Trang 7- 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.
- 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
Trang 8Thông điệp Ý nghĩa sự kiện
COMMAND Nhấp chuộtUPDATE_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:
COMMAND OnMenuMenuCon OnTaptinMoUPDATE_COMMAND_UI OnUpdateMenuMenuCon OnUpdateTaptinMo
// TODO: Add your control notification handler code here}
UPDATE_COMMAND_UI
void CTen_Ung_DungView::OnUpdateMenuMenuCon(CCmdUI* pCmdUI)
- 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:
Trang 9Progarmming void CMenuDlg::OnPheptinhCong()
// TODO: Add your command handler code hereUpdateData(TRUE);
m_c = m_a - m_b;
UpdateData(FALSE);
checkPT(MNU_TRU);
}void CMenuDlg::OnPheptinhNhan() {
// TODO: Add your command handler code hereUpdateData(TRUE);
m_c = m_a * m_b;
UpdateData(FALSE);
checkPT(MNU_NHAN);
}void CMenuDlg::OnPheptinhChia() {
// TODO: Add your command handler code hereUpdateData(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 hereOnOK();
}
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
Trang 10(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,
Trang 11UINT nEnable );
Ví dụ (Example)
* 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
- 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:
- 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
Trang 12- 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à
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;
(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);
Trang 13* 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
- 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:
- 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
Trang 14- 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à
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
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);
Trang 15Trong 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);
Khai báo biến-Variable Declaration
Chèn Thông điệp-Add Message
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
Trang 16Ví 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)
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
Trang 17Thiế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.
- 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
Trang 18- 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ộtBN_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}
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
Trang 19Ví 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");
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
Trang 20Vẽ-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:
Trang 21+ 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
- Hàm Format(): giống hàm printf của C.
void cdecl Format(
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
Trang 224.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à
- 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ả.
- 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
Trang 23hộ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
CString Kiểu Chuỗiint Kiểu số nguyênUINT Kiểu số nguyên (không dấu)long Kiểu số nguyên dài
DWORD Kiểu số nguyên dàifloat Kiểu số thực ngắndouble Kiểu số thực dàiBYTE 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
- 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
Trang 24- 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)
- 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à
- 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:
Trang 25+ Chọn hộp nếu muốn khung nhóm lõm xuống.
Khai báo biến-Variable Declaration
Chèn Thông điệp-Add Message
Quy tắc - Tạo 1 Group Box và chọn thuộc tính - Tạo Radio Box đầu tiên, chọn thuộc tính của nó. 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à
- 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.
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
Trang 26- Chọn tên định danh của hộp lựa chọn ở 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_radio_gioitinh.
+ 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
int Kiểu số nguyên
+ Nếu chọn là đối tượng ở hộp , thì chọn lớp ở hộp
Trang 27- 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
BN_CLICKED Nhấp chuộtBN_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 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}
Lập trình-Progarmming
- Ví dụ-Example:
UpdateData(TRUE);
switch (m_radio){
case 0: MessageBox("Khong"); break;
case 1: MessageBox("Mot"); break;
} UpdateData(FALSE);
Trang 28- Click chọn nút Check 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 đánh dấu là
- Click chuột phải lên hộp đánh dấu trên Hộp thoại-Dialog > chọn Properties.
- Sau đó xuất hiện hộp thoại Check Box Properties của hộp đánh dấu như hình sau:
+ Nhập tên định danh của hộp đánh dấu ở hộp VD:
IDC_CHECK_BONGDA.
+ Nhập nhãn hiển thị của đánh dấu ở hộp VD: Bong da.
+ Bỏ chọn hộp nếu muốn ẩn hộp đánh dấu.
+ Chọn hộp nếu muốn vô hiệu hóa hộp đánh dấu.
Trang 29Khai 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:
- Chọn tên định danh của hộp đánh dấu ở 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_check_bongda.
+ 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
BOOL Kiểu luận lý
+ Nếu chọn là đối tượng ở hộp , thì chọn lớp ở hộp
- Chọn thẻ > sau đó xuất hiện hộp thoại MFC ClassWizard như hình sau:
GV: Nguyễn Viết Nam 29
Trang 30- Chọn tên định danh của hộp đánh dấu ở 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ộtBN_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 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ụ
BN_CLICKED OnCheck OnCheckChay
- 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::OnCheckChay() {
// TODO: Add your control notification handler code here}
Retrieves the check state of a radio button or check box
Trả về trạng thái dấu Check của Check Box Control và
Radio Button Control
Cú pháp (Syntax)
int GetCheck( ) const;
BST_UNCHECKED : Không đặt dấu Check.
BST_CHECKED : Đặt dấu Check.
Ví dụ (Example)
if(m_check.GetCheck()==BST_CHECKED)
MessageBox("Ban la phai NU");
else MessageBox("Ban la phai NAM");
CButton::SetCheck
Mục đích (Purpose)
Sets or resets the check state of a radio button or check box
Thiết lập hay hủy bỏ dấu Check của Check Box Control
và Radio Button Control
Cú pháp (Syntax)
int GetCheck( ) const;
BST_UNCHECKED : Không đặt dấu Check.
BST_CHECKED : Đặt dấu Check.
Ví dụ (Example)
if(m_check.GetCheck()==BST_CHECKED)
MessageBox("Ban la phai NU");
else MessageBox("Ban la phai NAM");
Trang 314.9 Hộp danh sách-List Box (CListBox)
- Click chọn nút List 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 danh sách là
Mã-Code
Gán Thuộc tính- Assign Properties
Vẽ-Draw
- Click chuột phải lên hộp danh sách trên Hộp thoại-Dialog > chọn Properties.
- Sau đó xuất hiện hộp thoại List Box Properties của hộp danh sách như hình sau:
+ Nhập tên định danh của hộp danh sách ở hộp VD: IDC_LIST_HOTEN.
+ Bỏ chọn hộp nếu muốn ẩn hộp danh sách.
+ Chọn hộp nếu muốn vô hiệu hóa hộp danh sách.
- Chọn thẻ > xuất hiện hộp thoại List Box Properties như hình sau:
+ Chọn hộp để chọn kiểu hộp danh sách Các kiểu như sau:
Kiểu Ý nghĩa
Single - Chỉ có nhiều nhất một phần tử được chọn
Multiple - Nhiều phần tử có thể cùng được lựa chọn Việc lựa chọn được thực hiện bằng chuột kết hợp với phím Shift và Ctrl.Extended - Nhiều phần tử có thể cùng được lựa chọn Việc lựa chọn được thực hiện bằng chuột kết hợp với kéo rê và nhấn nút trái của chuột.None - Không có phần tử nào có thể được lựa chọn
Khai báo
biến-Variable Declaration - Click chuột phải lên hộp danh sách 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 31