3. Dự án (Project ) DPW 2 )-
4.20. Danh sách-List Control (CListCtrl)
Giới thiệu-Introduction - Là công cụ rất đặc trưng của các ứng dụng của Windows,
Thiết kế-Design Tạo-Create
Vẽ-Draw
- Click chọn nút List Control 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ó danh sách là .
Viết mã- Coding
Gán Thuộc tính- Assign Properties Thiết kế-Design
- Click chuột phải lên danh sách trên Hộp thoại-Dialog > chọn Properties. - Sau đó xuất hiện hộp thoại List ControlProperties của danh sách như hình sau:
+ Nhập tên định danh của danh sách ở . VD: IDC_LIST_HOADON. + Bỏ chọn hộp nếu muốn ẩn danh sách.
+ Chọn hộp nếu muốn vô hiệu hóa danh sách.
- Chọn thẻ > xuất hiện hộp thoại List Control Properties như hình sau:
+ Chọn kiểu hiển thị danh sách ở hộp .
Kiểu Giải nghĩa
Icon Biểu tượng Small Icon Biểu tượng nhỏ List Danh sách Report Báo cáo - 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 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:
- Chọn tên định danh của danh sách ở 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_list_hoadon.
+ Chọn là đối tượng ở hộp , thì chọn lớp ở hộp .
Kiểu Giải nghĩa
CListCtrl Lớp Danh sách
- 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 danh sách ở khung Object IDs > chọn thông điệp ở khung
Messages:
Thông điệp Ý nghĩa sự kiện
NM_CLICK Nhấp chuột NM_DBCLK Nhấp đúp chuột NM_KILLFOCUS
NM_OUTOFMEMORY
NM_RCLICK Nhấp chuột phải NM_RDBCLK Nhấp đúp chuột phải NM_RETURN NM_SETFOCUS LVN_BEGINDRAG LVN_BEGINLABELEDIT LVN_BEGINRDRAG LVN_COLUMNCLICK LVN_DELETEALLITEMS LVN_DELETEITEM LVN_ENDLABELEDIT LVN_GETDISPINFO LVN_INSERTITEM LVN_ITEMCHANGED LVN_ITEMCHANGING LVN_KEYDOWN LVN_SETDISPINFO
LVN_ODCACHEHINT LVN_ODFINDITEM LVN_ODSTATECHANGED HDN_ITEMCHANGED HDN_ITEMCHANGING HDN_TRACK HDN_ITEMCLICK HDN_ITEMDBLCLICK HDN_BEGINTRACK HDN_ENDTRACK HDN_DIVIDERDBLCLICK HDN_BEGINDRAG HDN_ENDDRAG HDN_GETDISPINFO
- 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 InsertColumn(0,text,)InsertItem(0,text) InsertColumn(n,text,)SetItemText(0,n,text)
… …
InsertItem(m,text) SetItemText(m,n,text)
CListCtrl::InsertColumn
Mục đích (Purpose)
Inserts a new column in a list view control. Hàm dùng để chèn mộtcột mới vào List Control.
Cú pháp (Syntax)
int InsertColumn( int nCol,
const LVCOLUMN* pColumn );
int InsertColumn( int nCol,
LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int nWidth = -1,
int nSubItem = -1 );
Ví dụ
(Example) BOOL CBaiDlg::OnInitDialog(){ …
// TODO: Add extra initialization here m_list.InsertColumn(0, "Ho ten", LVCFMT_LEFT, 120); m_list.InsertColumn(1, "Diem", LVCFMT_RIGHT, 70); … } CListCtrl::InsertItem Mục đích
(Purpose) Dùng để chèn mộtphần tử vào List Control. Cú pháp
(Syntax) int InsertItem( const LVITEM* pItem );
int InsertItem( int nItem, LPCTSTR lpszItem ); int InsertItem( int nItem, LPCTSTR lpszItem, int nImage ); Ví dụ (Example) UpdateData(TRUE); m_list.InsertItem(0,m_edit_hoten); int index = m_list.GetItemCount(); m_list.InsertItem(index,m_edit_hoten); UpdateData(FALSE);
CListCtrl::SetItemText
Mục đích
(Purpose) Changes the text of a list view item or subitem. Cú pháp (Syntax) BOOL SetItemText( int nItem, int nSubItem, LPCTSTR lpszText ); Ví dụ (Example) CString strDiem; UpdateData(TRUE); strDiem.Format("%d", m_edit_diem); m_list.SetItemText(0,1,strDiem); UpdateData(FALSE); CListCtrl::GetItemCount Mục đích
(Purpose) Retrieves the number of items in a list view control. Cú pháp
(Syntax) int GetItemCount( ) const; Ví dụ
(Example)
CListCtrl::DeleteAllItems
Mục đích (Purpose)
Deletes all items from the list view control. Xóa tất cả các phần tử có trong List Control.
Cú pháp
(Syntax) BOOL DeleteAllItems( ); Ví dụ
(Example)
CListCtrl::DeleteItem
Mục đích
(Purpose) Deletes an item from a list view control.Xóa một phần tử trong List Control.
Cú pháp (Syntax) BOOL DeleteItem( int nItem ); Ví dụ (Example) 4.21. Picture
Giới thiệu-Introduction - Là một công cụ dùng để hiển thị hình ảnh dạng Bitmap.
4.22. Images, Bitmaps và Icons
4.23. Hoạt hình-Animate
Giới thiệu- Introduction
- Là một công cụ dùng để đọc file có đuôi (*.avi). Nó thường được sử dụng để minh họa chương trình của bạn thêm phong phú. Các hình ảnh chúng ta thường gặp trong Windows là: khi copy file, tìm file, xóa file.
4.24. Hộp địa chỉ mạng-IP Address
Giới thiệu-Introduction - Là một công cụ dùng để nhập các địa chỉ IP đối với các ứng dụng liên kết mạng.
4.25. Hộp thông báo-Message Box (Lớp CWnd)
Cú pháp-Syntax int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType );
int MessageBox(“Text1”,”Text2”,MB_OK + MB_ICONINFORMATION)
Đối số-Parameter
- Text1: Hiển thị dòng nội dung thông báo trên hộp thông báo. - Text2: Hiển thị dòng tiêu đề của hộp thông báo.
- Tổ hợp nút:
ID Nút
MB_ABORTRETRYIGNORE Abort, Retry, Ignore
MB_OK OK
MB_OKCANCEL OK, Cancle MB_RETRYCANCEL Retry, Cancel MB_YESNO Yes, No
MB_YESNOCANCEL Yes, No, Cancel - Biểu tượng:
ID Biểu tượng
MB_ICONINFORMATION Thông tin
MB_ICONQUESTION Biểu tượng dấu hỏi MB_ICONSTOP Dấu chấm
MB_ICONEXCLAM Dấu chấm than
Giá trị trả về-Return Value
ID Nút IDABORT Abort IDRETRY Retry IDIGNORE Ignore IDYES Yes IDNO No IDOK OK IDCANCEL Cancel
Ví dụ-Example MessageBox("Chao ban!");
5. Giải thuật (Algorithm)
5.1. Thoát-Exit
Cú pháp-Syntax OnOK();
5.2. GetDlgItem
Mục đích-
Purpose - Trả về con trỏ chỉ đến một Control hoặc cửa sổ con trong một Dialog hoặc 1 cửa sổ khác có chỉ số nID.
Mô hình-Model ID của Điều khiển GetDlgItem Con trỏ
Cú pháp-Syntax
virtual CWnd* GetDlgItem( int nID
) const;
virtual void GetDlgItem( int nID,
HWND* phWnd
) const;
5.3. ShowWindow
Mô hình-Model
UpdateData TRUE (Đúng)
Điều khiển Biến UpdateData FALSE (Sai)
Điều khiển Biến
Cú pháp-Syntax BOOL UpdateData(BOOL bSaveAndValidate)
5.4. UpdateData
Mô hình-Model
UpdateData TRUE (Đúng)
Điều khiển Biến UpdateData FALSE (Sai)
Điều khiển Biến
Cú pháp-Syntax BOOL UpdateData(BOOL bSaveAndValidate) Lập trình-
Progarmming * - Hàm Cập nhật Button trong quá trình thực thi (Lớp CWnd)IsWindowEnabled(): Hàm trả về khác 0 nếu cửa sổ :Enable. BOOL IsWindowEnabled( ) const;
- Hàm EnableWindow(): Enable (TRUE) hoặc Disable (FALSE) một cửa sổ. BOOL EnableWindow(
BOOL bEnable = TRUE ); - Ví dụ-Example: CButton* pButton2=(CButton*)GetDlgItem(IDC_BUTTON2); if(pButton2->IsWindowEnabled()) pButton2->EnableWindow(FALSE); else pButton2->EnableWindow(TRUE);
- Hàm IsWindowVisibled(): hàm trả về khác 0 nếu cửa sổ Visible. BOOL IsWindowVisible( ) const;
- Hàm ShowWindow(): Đặt trạng thái Visible của cửa sổ (SW_HIDE:ẩn cửa sổ, SW_SHOW: hiện cửa sổ) 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);
- Hàm SetWindowText(): Đặt tiêu đề cho một cửa sổ. void SetWindowText(
LPCTSTR lpszString
);
· Hàm GetWindowText(): 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)
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");
Đồ họa-Graphic Vẽ hình-Draw
Tạo lớp CDiem
- Click chọn menu > chọn New Class. - Sau đó xuất hiện hộp thoại New Class:
+ Chọn loại lớp là Generic Class ở hộp . + Nhập tên lớp ở hộp .
+ Nhập lớp kế thừa là CObject ở mục . + Nhập phạm vi là public ở mục .
- Vào lớp CDiem.h, nhập nội dung sau vào phần public: CPoint m1,m2; //Khai bao 2 diem
int mShape; //Bien loai hinh int mWidth; //Bien do day COLORREF color; //Bien mau
Lớp Doc.h
- Nhập nội dung sau vào phần //Attributes:
CPoint mOld, mCur; //Khai bao 2 diem CObArray mDS; //Tao mang danh sach int mShape; //Bien loai hinh
int mWidth; //Bien do day
sCOLORREF mColor; //Bien mau Sự kiện
WM_LbuttonDown của lớp View
CVehinhDoc* pDoc = GetDocument(); if (nFlags & MK_LBUTTON)
{ pDoc->mOld = point; } Sự kiện WM_LbuttonUp của lớp View Sự kiện WM_MouseMove
của lớp View CVehinhDoc* pDoc = GetDocument();if (nFlags & MK_LBUTTON) {
pDoc->mCur = point;
} Phương thức OnDraw của lớp View CDiem* pDiem; //CPen* pPen;
//Ve cac diem truoc do den diem hien tai for(int i=0; i<pDoc->mDS.GetSize(); i++) { //mPen.DeleteObject(); pDiem = (CDiem*)pDoc->mDS.GetAt(i); //mPen.CreatePen(PS_SOLID, 1, pDiem->color); //if(i==0) //pPen = pDC->SelectObject(&mPen); //else //pDC->SelectObject(&mPen);
DrawShape(pDC, pDiem->type, pDiem->m1, pDiem->m2); }
DrawShape(pDC, pDoc->type, pDoc->m1, pDoc->m2); Hàm DrawShape
Lớp View.cpp
- Nhập dòng #include "Diem.h".
- Chọn thẻ > Click chuột phải lên lớp View > Chọn Add Member Function.
- Sau đó xuất hiện hộp thoại Add Member Function như hình sau:
o Nhập kiểu dữ liệu trả về là void ở hộp .
o Nhập tên hàm là DrawShape ở hộp .
- Nhập đối số cho hàm như sau:
DrawShape(CDC* pDC, int mShape, CPoint m1, CPoint m2)
- Kế đó nhập nội dung hàm như sau:
void CVeHinhView::DrawShape(CDC* pDC, int mShape, CPoint m1, CPoint m2) switch(mShape) { case 1: pDC->MoveTo(m1); pDC->LineTo(m2); break; case 2:
pDC->Rectangle(m1.x, m1.y, m2.x, m2.y); break;
case 3:
pDC->Ellipse(m1.x, m1.y, m2.x, m2.y); break;
} }
Lớp View.h
- Thêm đối số cho hàm DrawShape như sau:
// Implementation public:
void DrawShape(CDC* ,int ,CPoint ,CPoint ); Sự kiện WM_LButtonUp
của lớp View
CVehinhDoc* pDoc = GetDocument(); CDiem* pDiem = new CDiem();
pDiem->m1 = pDoc->mOld; pDiem->m2 = pDoc->mCur; pDiem->mShape = pDoc->mShape; pDiem->mColor = pDoc->mColor; pDoc->mDS.Add(pDiem); }
- MFC: CVeHinhView > CVeHinhView > WM_LButtonDown - MFC: CVeHinhView > CVeHinhView > WM_LButtonUp - MFC: CVeHinhView > CVeHinhView > WM_MouseMove
- MFC: CVeHinhView > ID_LUACHON_DUONGTHANG > COMMAND void CVehinhView::OnLuachonDuongthang()
{
// TODO: Add your command handler code here CVehinhDoc* pDoc = GetDocument();
pDoc->type = 1; //line; }
- MFC: CVeHinhView > ID_LUACHON_DUONGTHANG > UPDATE_COMMAND_UI: void CVehinhView::OnUpdateLuachonDuongthang(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here CVehinhDoc* pDoc = GetDocument();
if(pDoc->type==1)
pCmdUI->SetCheck(1); else
pCmdUI->SetCheck(0); }
Thiết kế Điều khiển-Control Design Vẽ-Draw
1) Resource View > Menu > IDR_MAINFRAME ID_LUACHON_DUONGTHANG
ID_LUACHON_HINHCHUNHAT ID_LUACHON_ELIP
Thuộc tính-Properties Viết mã-Coding
Khai báo Biến-Variable Declaration Chèn Thông điệp- Add Message
1. Cài đặt (Setup) ... 1
1.1. Visual C++ 6.0 ... 1
2. Cửa sổ làm việc (Window) ... 1
2.1. Khởi động-Open,Thoát-Exit ... 1
2.2. Giao diện (Interface) ... 1
3. Dự án (Project) - DPW ... 2 * Cập nhật ứng dụng: ... 5 ... 5 ... 5 ... 5 ... 5 * Đóng ứng dụng: ... 5 ... 5
4. Giao diện (Interface) ... 5
4.1. Trình đơn-Menu (CWnd,CMenu) ... 5
4.2. Cửa sổ-Dialog~Lớp-Class ... 11
4.2.1. Modal (CDialog) ... 11
4.2.2. Modeless (CDialog) ... 13
4.3. Nút-Button (CButton,CWnd) ... 16
4.4. Nhãn-Static Text (CString,CStatic) ... 19
4.5. Hộp nhập liệu-Edit Text (CEdit) ... 22
4.6. Khung nhóm-Group Box ... 24
4.7. Hộp lựa chọn-Radio Box (CButton) ... 25
4.8. Hộp đánh dấu-Check Box (CButton) ... 28
4.9. Hộp danh sách-List Box (CListBox) ... 31
4.10. Hộp danh sách thả xuống-Combo Box (CComboBox) ... 35
4.11. Hộp ngày giờ-Date Time Picker (COleDateTime, CTime) ... 39
4.12. Hộp ngày tháng-Month Calendar Control (COleDateTime, CTime) ... 42
4.13. Thời gian-Timer (COleDateTime, CTime) ... 42
4.14. Thanh tiến trình-Progress (CProgressCtrl) ... 43
4.15. Thanh cuộn-Scroll Bar (CScrollBar) ... 46
4.16. Thanh trượt-Slider (CSliderCtrl) ... 46
4.17. Hộp tăng giảm giá trị-Spin () ... 49
4.18. Cây-Tree Control (CTreeCtrl) ... 49
4.19. Thẻ-Tab Control (CTreeCtrl) ... 52
4.20. Danh sách-List Control (CListCtrl) ... 52
4.21. Picture ... 56
4.22. Images, Bitmaps và Icons ... 56
4.23. Hoạt hình-Animate ... 56
4.24. Hộp địa chỉ mạng-IP Address ... 57
4.25. Hộp thông báo-Message Box (Lớp CWnd) ... 57
5. Giải thuật (Algorithm) ... 57
5.1. Thoát-Exit ... 57
5.2. GetDlgItem ... 57
5.3. ShowWindow ... 58