工具列基本概念
本文說明基本的 MFC 實作,可讓您選取 [應用程式精靈] 中的選項,將預設工具列新增至應用程式。 涵蓋的主題包括:
應用程式精靈工具列選項
若要取得具有預設按鈕的單一工具列,請選取標示為 [使用者介面功能] 頁面上的 [標準停駐] 工具列選項。 這會將程式碼新增至您的應用程式,以便:
建立工具列物件。
管理工具列,包括其停駐或浮動的能力。
程式碼中的工具列
工具列是 宣告為應用程式類別之資料成員的 CMainFrame
CToolBar 物件。 換句話說,工具列物件會內嵌在主框架視窗物件中。 這表示 MFC 會在建立框架視窗時建立工具列,並在終結框架視窗時終結工具列。 多個檔介面 (MDI) 應用程式的下列部分類別宣告會顯示內嵌工具列和內嵌狀態列的資料成員。 它也會顯示成員函式的 OnCreate
覆寫。
class CMainFrame : public CMDIFrameWnd
{
// Implementation
protected: // control bar embedded members
CStatusBar m_wndStatusBar;
CToolBar m_wndToolBar;
// Generated message map functions
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
DECLARE_MESSAGE_MAP()
工具列建立會在 中 CMainFrame::OnCreate
發生。 MFC 會在 建立框架的視窗之後呼叫 OnCreate ,但在畫面變成可見之前。 應用程式精靈產生的預設值 OnCreate
會執行下列工具列工作:
CToolBar
呼叫物件的 Create 成員函式,以建立基礎 CToolBarCtrl 物件。呼叫 LoadToolBar 以載入工具列資源資訊。
呼叫函式以啟用停駐、浮動和工具提示。 如需這些呼叫的詳細資訊,請參閱停駐和浮動工具列一 文 。
注意
MFC 一般範例 DOCKTOOL 包含新舊 MFC 工具列的圖例。 使用 COldToolbar
的工具列需要步驟 2 中的呼叫 , LoadBitmap
而不是 LoadToolBar
) 和 。 SetButtons
新的工具列需要呼叫 LoadToolBar
。
停駐、浮動和工具提示呼叫是選擇性的。 您可以視需要從 OnCreate
中移除這些行。 結果是維持固定的工具列,無法浮動或重設,且無法顯示工具提示。
編輯工具列資源
您使用應用程式精靈取得的預設工具列是以 MFC 4.0 版中引進的 RT_TOOLBAR自訂資源為基礎 。 您可以使用工具列編輯器 來編輯此資源 。 編輯器可讓您輕鬆地新增、刪除和重新排列按鈕。 它包含按鈕的圖形編輯器,與 Visual C++ 中的一般圖形編輯器非常類似。 如果您在舊版 Visual C++ 中編輯工具列,現在會發現工作會更容易。
若要將工具列按鈕連線至命令,您可以為按鈕提供命令識別碼,例如 ID_MYCOMMAND
。 在工具列編輯器的按鈕屬性頁中指定命令識別碼。 然後建立命令的處理常式函式(如需詳細資訊,請參閱 將訊息對應至函式 )。
新的 CToolBar 成員函式會使用 RT_TOOLBAR 資源。 LoadToolBar 現在會取代 LoadBitmap 來載入工具列按鈕影像的點陣圖,而 SetButtons 則會設定按鈕樣式,並使用點陣圖影像連接按鈕。
如需使用工具列編輯器的詳細資訊,請參閱 工具列編輯器 。
多個工具列
[應用程式精靈] 提供您一個預設工具列。 如果您在應用程式中需要多個工具列,您可以根據預設工具列的精靈產生的程式碼,為其他工具列建立程式碼模型。
如果您想要將工具列顯示為命令的結果,您必須:
使用工具列編輯器建立新的工具列資源,並使用 LoadToolbar 成員函式將其
OnCreate
載入。在主框架視窗類別中內嵌新的 CToolBar 物件。
在 中
OnCreate
呼叫適當的函式,以停駐或浮動工具列、設定其樣式等等。