使用者定義類型
MFC 支援使用者定義的工具。 一個使用者定義的工具是執行外部,使用者指定的程式的特殊命令。 您可以使用自訂的程序處理使用者定義的工具。 不過,因此,如果您的應用程式物件從 CWinAppEx 類別,不是衍生自您無法使用這個程序。 如需自訂的詳細資訊,請參閱 MFC 自訂。
如果啟用了使用者定義的工具支援,自訂對話方塊會自動包含 [工具] 索引標籤。 下圖顯示 [工具] 頁面。
自訂對話方塊工具選項
啟用使用者定義的工具支援
若要啟用應用程式的使用者定義的工具,請呼叫 CWinAppEx::EnableUserTools。 不過,您必須先定義在應用程式資源檔中的數個常數當做參數傳遞至這個呼叫。
在資源編輯器中建立使用適當的命令 ID. 的假的命令 在下列範例中,我們會使用 ID_TOOLS_ENTRY做為命令識別碼 . 這個命令 ID 指示架構中插入使用者定義工具一或多個功能表的位置。
您可以在字串資料表內必須保留一些連續 ID 代表使用者定義的工具。 您保留字串數目與的使用者工具最大數目相等的使用者定義。 在下列範例中,這些命名為 ID_USER_TOOL1 透過 ID_USER_TOOL10。
您可以為使用者提供建議協助它們會呼叫做為工具的外部程式選取目錄和引數。 若要這麼做,請在資源編輯器中兩個快顯功能表。 在下列範例中這些命名為 IDR_MENU_ARGS 和 IDR_MENU_DIRS。 對於這些功能表中的每一個命令,請定義字串在應用程式字串資料表內。 字串的資源識別碼必須等於命令 ID.
您也可以從 CUserTool 類別 的衍生類別取代預設實作。 若要這麼做,請將您的衍生類別的執行階段資訊做為第四個參數在 CWinAppEx::EnableUserTools,而不是 RUNTIME_CLASS (CUserTool 類別)。
在定義適當的常數之後,呼叫啟用使用者定義工具的 CWinAppEx::EnableUserTools 。
下列方法會顯示如何使用這些常數:
EnableUserTools(ID_TOOLS_ENTRY, ID_USER_TOOL1, ID_USER_TOOL10, RUNTIME_CLASS(CUserTool), IDR_MENU_ARGS, IDR_MENU_DIRS);
在此範例中,工具選項將會包含在 [自訂] 對話方塊。 架構會取代所有命令符合任何功能表的命令 ID ID_TOOLS_ENTRY 含有目前定義的使用者工具,每次使用者開啟該功能表。 命令 ID ID_USER_TOOL1 透過 ID_USER_TOOL10 是保留給使用者定義工具的使用。 CUserTool 類別 類別處理對使用者工具。 [自訂] 對話方塊的工具選項在引數和目錄項目欄位右邊的按鈕來存取功能表的 IDR_MENU_ARGS 和 IDR_MENU_DIRS。,當使用者選取命令從這些功能表的其中一個時,架構會附加到適當的文字方塊有資源 ID 等於命令 ID. 的字串
包含預先定義的工具
如果您要定義在應用程式啟動的一些工具,您必須覆寫主視窗的 CFrameWnd::LoadFrame 方法應用程式。 在該方法中,您必須執行下列步驟。
加入新的工具在 LoadFrame
取得指標對 CUserToolsManager 類別 物件藉由呼叫 CWinAppEx::GetUserToolsManager。
針對您要建立的每個工具,稱為 CUserToolsManager::CreateNewTool。 這個方法會傳回指標對 CUserTool 類別 物件並加入新建立之使用者工具至工具的內部集合。 如果您為 CUserTool 類別 衍生的類別提供了執行階段資訊做為 CWinAppEx::EnableUserTools第四個參數, CUserToolsManager::CreateNewTool 會具現化並傳回該類別的執行個體。
對於每個工具,將 CUserTool::m_strLabel 設定其文字標籤並呼叫 CUserTool::SetCommand設定它的命令。 CUserTool 類別 的預設實作會在對 SetCommand的呼叫所指定的程式自動擷取可用的圖示。