Danh sách-List Control (CListCtrl)

Một phần của tài liệu Bài giảng Visual C++ 6.0 pot (Trang 52 - 62)

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ớpGeneric Class ở hộp . + Nhập tên lớp ở hộp .

+ Nhập lớp kế thừaCObject ở mục . + Nhập phạm vipublic ở 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ềvoid ở hộp .

o Nhập tên hàmDrawShape ở 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

Một phần của tài liệu Bài giảng Visual C++ 6.0 pot (Trang 52 - 62)

Tải bản đầy đủ (PDF)

(62 trang)