Поделиться через


Образец COLLECT: примеры классов коллекций MFC

Обновлен: Ноябрь 2007

Образец COLLECT иллюстрирует различные классы коллекций, включенные в библиотеку Microsoft Foundation Class (MFC).

fw2702d6.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Этот образец кода служит для демонстрации основных принципов и не предназначен для использования в приложениях или на веб-узлах, поскольку не может считаться примером наиболее безопасного кода. Корпорация Майкрософт не несет ответственности за случайные или косвенные убытки в случае использования образца кода не по назначению.

Чтобы получить образцы и инструкции по их установке, выполните следующие действия.

  • В меню Справка среды Visual Studio выберите пункт Примеры.

    Дополнительные сведения см. в разделе Поиск файлов примеров.

  • Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.

  • Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \Program Files\Visual Studio 9.0\Samples\. Все образцы кода для экспресс-выпусков Visual Studio находятся в Интернете.

Построение и запуск образца

Построение и запуск образца COLLECT

  1. Откройте решение collect.sln.

  2. В меню Построение выберите команду Построить.

  3. В меню Отладка выберите пункт Запуск без отладки.

В меню Example включены девять примеров классов коллекций, которые организованы по принципам, показанным в приведенной ниже таблице. Каждый пример содержит представление формы, где используется множество операций, типичных для коллекций:

  • добавление нового элемента;

  • вставка нового элемента в середине списка;

  • поиск элемента (по щелчку в соответствующей строке списка диалогового окна);

  • поиск записи в карте по введенному ключу (нажатием кнопки "Найти");

  • обновление значения элемента;

  • удаление элемента;

  • удаление всех элементов коллекции.

Можно сохранить изменения во всех примерах, выбрав команду Сохранить в меню Файл, и считать их снова с помощью команды Открыть в меню Файл.

Классы коллекций MFC

Классы коллекций MFC можно систематизировать по их форме и конструкции. MFC предлагает классы для коллекций следующих форм:

  • Списки

  • Массивы

  • Карты

MFC также поддерживает три типа конструкции:

  • Без использования шаблонов C++.

  • Использование коллекции C++ на основе шаблона, состоящей из простых элементов.

  • Использование коллекции C++ на основе шаблона, состоящей из строго типизированных указателей.

В следующей таблице перечислены все классы коллекций MFC, отсортированные согласно их форме и конструкции. В образце COLLECT иллюстрируются девять из этих коллекций, по одной из каждой ячейки таблицы. Каждый пример представляет определенную комбинацию формы и конструкции. Кроме того, поскольку коллекции CTypedPtrArray и CTypedPtrList, основанные на шаблоне, используются по-разному в зависимости от того, какие указатели в них хранятся — на объекты CObject или не на объекты CObject, образец COLLECT иллюстрирует оба случая. Коллекции, иллюстрируемые образцом COLLECT, отмечены звездочкой.

Форма коллекции

Не на основе шаблона

Простые элементы, на основе шаблона

Строго типизированные указатели, на основе шаблона

Список

CStringList*

CList*

CTypedPtrList

 

CObList

 

(для указателей)*

 

CPtrList

 

CTypedPtrList

 

 

 

(для объектов CObject)

Массив

CByteArray

CArray*

CTypedPtrArray

 

CUIntArray

 

(для указателей)

 

CWordArray*

 

 

 

CDWordArray

 

CTypedPtrArray

 

CStringArray

 

(для объектов CObject)*

 

CPtrArray

 

 

 

CObArray

 

 

Карта

CMapWordToPtr

CMap*

CTypedPtrMap*

 

CMapWordToOb

 

 

 

CMapStringToString*

 

 

 

CMapStringToPtr

 

 

 

CMapStringToOb

 

 

 

CMapPtrToWord

 

 

 

CMapPtrToPtr

 

 

Дополнительные возможности COLLECT

Помимо классов коллекций MFC, образец COLLECT демонстрирует следующие возможности:

  • Добавление и удаление строк списка в соответствии с добавлением и удалением элементов коллекции.

  • Переключение между различными представлениями документа, показываемыми по одному. Хотя в COLLECT имеется несколько представлений, здесь используется однодокументный интерфейс (SDI), а не многодокументный (MDI).

Ключевые слова

В этом образце показаны следующие ключевые слова:

AfxMessageBox; CCmdUI::SetCheck; CControlBar::EnableDocking; CDialog::DoModal; CDocument::DeleteContents; CDocument::OnNewDocument; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CFrameWnd::GetActiveDocument; CFrameWnd::GetActiveView; CFrameWnd::RecalcLayout; CFrameWnd::SetActiveView; CListBox::AddString; CListBox::DeleteString; CListBox::FindString; CListBox::GetCurSel; CListBox::GetItemData; CListBox::GetItemDataPtr; CListBox::GetText; CListBox::InsertString; CListBox::ResetContent; CListBox::SetItemData; CListBox::SetItemDataPtr; CObject::AssertValid; CObject::Dump; CObject::Serialize; CStatusBar::Create; CStatusBar::SetIndicators; CString::Empty; CString::Format; CString::LoadString; CToolBar::Create; CToolBar::LoadBitmap; CToolBar::SetButtons; CView::DoPreparePrinting; CView::GetDocument; CView::OnBeginPrinting; CView::OnDraw; CView::OnEndPrinting; CView::OnInitialUpdate; CView::OnPreparePrinting; CView::OnUpdate; CWinApp::AddDocTemplate; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::OnFileNew; CWnd::DestroyWindow; CWnd::DoDataExchange; CWnd::OnCreate; CWnd::ShowWindow; CWnd::UpdateData; LoadString; SetWindowLong

fw2702d6.alert_note(ru-ru,VS.90).gifПримечание.

Некоторые образцы, включая данный, не модифицировались с учетом изменений в мастерах, библиотеках и компиляторе Visual C++, однако по-прежнему демонстрируют выполнение требуемой задачи.

См. также

Другие ресурсы

Примеры MFC