Образец COLLECT: примеры классов коллекций MFC
Обновлен: Ноябрь 2007
Образец COLLECT иллюстрирует различные классы коллекций, включенные в библиотеку Microsoft Foundation Class (MFC).
Примечание о безопасности. |
---|
Этот образец кода служит для демонстрации основных принципов и не предназначен для использования в приложениях или на веб-узлах, поскольку не может считаться примером наиболее безопасного кода. Корпорация Майкрософт не несет ответственности за случайные или косвенные убытки в случае использования образца кода не по назначению. |
Чтобы получить образцы и инструкции по их установке, выполните следующие действия.
В меню Справка среды Visual Studio выберите пункт Примеры.
Дополнительные сведения см. в разделе Поиск файлов примеров.
Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.
Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \Program Files\Visual Studio 9.0\Samples\. Все образцы кода для экспресс-выпусков Visual Studio находятся в Интернете.
Построение и запуск образца
Построение и запуск образца COLLECT
Откройте решение collect.sln.
В меню Построение выберите команду Построить.
В меню Отладка выберите пункт Запуск без отладки.
В меню 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
Примечание. |
---|
Некоторые образцы, включая данный, не модифицировались с учетом изменений в мастерах, библиотеках и компиляторе Visual C++, однако по-прежнему демонстрируют выполнение требуемой задачи. |