Мы уже несколько раз касались этого класса раньше. Теперь пришло время познакомиться с ним подробнее.
Этот класс позволяет нам работать с таким элементом управления Windows, как список. Для работы давайте создадим учебный проект с помощью MFC AppWizard и именем TestList на базе диалогового окна. Поместим на него элемент управления список(CListBox) и свяжем этот элемент управления с помощью Class Wizard с реальным объектом, тип у которого будет Control. Вот так это выглядит.
class CTestListDlg : public CDialog { ...... //Dialog Data //{{AFX_DATA(CTestListDlg) enum { IDD = IDD_TESTLIST_DIALOG }; CListBox m_List; //}}AFX_DATA ...... };
Давайте сразу добавим несколько записей:
BOOL CTestListDlg::OnInitDialog() { ...... // TODO: Add extra initialization here m_List.AddString("США"); m_List.AddString("РОССИЯ"); m_List.AddString("КАНАДА"); m_List.AddString("ЯПОНИЯ"); return TRUE; // return TRUE unless you set the focus to a control }
Это все нам знакомо. Для того, чтобы более подробно изучить этот класс нам придется создать свой класс-наследник от CListBox. Для этого выберем пункт меню New Class. Укажите его тип MFC Class и имя CTestList, базовый класс у него будет CListBox. Теперь нам нужно сделать ссылку на заголовочный файл в классе диалога.
// TestListDlg.h : header file // #if !defined(AFX_TESTLISTDLG_H__62DE931C_B7E3_11D4_9414_444553540000__INCLUDED_) #define AFX_TESTLISTDLG_H__62DE931C_B7E3_11D4_9414_444553540000__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "TestList1.h" /////////////////////////////// // CTestListDlg dialog class CTestListDlg : public CDialog ......
Обратите внимание, как VC корректно решил проблему имен. Ведь заголовочный файл с таким именем уже был. Теперь нам нужно заменить ссылку с CListBox на наш класс.
...... class CTestListDlg : public CDialog { // Construction public: CTestListDlg(CWnd* pParent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CTestListDlg) enum { IDD = IDD_TESTLIST_DIALOG }; CTestList m_List; //}}AFX_DATA ......
Скомпилируйте и проверьте. Все готово к испытаниям.