COLLECT 範例:說明 MFC 集合類別

更新:2007 年 11 月

COLLECT 範例說明由 MFC 程式庫 (MFC) 所提供的各種集合類別。

安全性注意事項:

這個程式碼範例僅供概念說明之用,同時因為範例中的程式碼撰寫並沒有周全的顧及所有安全性問題,所以本範例不適用於實際執行的應用程式或網站中。如果使用者擅自將範例程式碼用於其他意圖而導致連帶事件或重大損害時,Microsoft 將不承擔任何責任。

若要取得範例和指示以便進行安裝:

  • 按一下 Visual Studio [說明] 功能表上的 [範例]。

    如需詳細資訊,請參閱尋找範例檔案

  • 最新版的完整範例清單可從 Visual Studio 2008 範例網頁 (英文) 取得。

  • 您也可以將範例置於電腦硬碟中。根據預設,範例和讀我檔案都會複製到 \Program Files\Visual Studio 9.0\Samples\ 下的資料夾中。對於所有的 Visual Studio Express 版,所有範例都可在線上找到。

建置和執行範例

若要建置並執行 COLLECT 範例

  1. 開啟 collect.sln. 方案。

  2. 在 [建置] 功能表上,按一下 [建置]。

  3. 在 [偵錯] 功能表上,按一下 [啟動但不偵錯]。

[Example] 功能表會列出根據下表所組織的九個集合類別說明。每一個範例都示範運用許多常見類別作業的表單檢視:

  • 加入新增項目

  • 在清單間插入新項目

  • 搜尋項目 (在對話方塊的清單方塊中按一下項目)

  • 輸入關鍵字並按下 [Find] 以搜尋對應中的項目

  • 更新項目的值

  • 移除項目

  • 移除此集合中的所有項目

您可以按一下 [File] 功能表上的 [Save],儲存對所有範例所做的變更,然後藉由按一下 [File] 功能表上的 [Open] 來讀取這些檔案。

MFC 集合類別

MFC 集合類別可以根據形狀和設計來分類。MFC 提供三種集合形狀的類別:

  • 清單

  • 陣列

  • 對應

MFC 也提供三種設計:

  • 不使用 C++ 樣板

  • 使用 C++ 樣板架構簡單項目集合

  • 使用 C++ 樣板架構型別安全指標集合

以下表格會列出根據形狀和設計所排序的所有 MFC 集合類別。COLLECT 範例以每一格列出一種集合的方式,說明這九個集合。每一格都代表一個特別的形狀和設計的結合。而且,因為 CTypedPtrArrayCTypedPtrList 樣板架構集合的用法,會根據它們是存放 CObjects 指標或非 CObject 指標而有所不同,COLLECT 範例會說明這兩種狀況。由 COLLECT 所說明的九個集合都是以星號 (*) 標示。

集合形狀

非樣板架構

樣板架構簡單項目

樣板架構 typeSafe 指標

清單

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++ 精靈、程式庫以及編譯器方面的變更,不過還是可以示範如何完成您要進行的工作。

請參閱

其他資源

MFC 範例