Dela via


Användardefinierade verktyg

MFC stöder användardefinierade verktyg. Ett användardefinierat verktyg är ett särskilt kommando som kör ett externt, användardefinierat program. Du kan använda anpassningsprocessen för att hantera användardefinierade verktyg. Du kan dock inte använda den här processen om programobjektet inte härleds från CWinAppEx-klassen. Mer information om anpassning finns i Anpassning för MFC.

Om du har aktiverat stöd för användardefinierade verktyg innehåller anpassningsdialogrutan automatiskt fliken Verktyg . Följande bild visar sidan Verktyg .

Verktygsfliken i dialogrutan Anpassa.
Dialogrutan Verktyg för anpassning

Aktivera stöd för användardefinierade verktyg

Om du vill aktivera användardefinierade verktyg i ett program anropar du CWinAppEx::EnableUserTools. Du måste dock först definiera flera konstanter i resursfilerna i ditt program för att kunna använda som parametrar för det här anropet.

I resursredigeraren skapar du ett dummy-kommando som använder ett lämpligt kommando-ID. I följande exempel använder ID_TOOLS_ENTRY vi som kommando-ID. Det här kommando-ID:t markerar en plats i en eller flera menyer där ramverket infogar de användardefinierade verktygen.

Du måste ange några på varandra följande ID:er i strängtabellen för att representera de användardefinierade verktygen. Antalet strängar som du reserverar är lika med det maximala antalet användarverktyg som användarna kan definiera. I följande exempel namnges dessa som ID_USER_TOOL1 till ID_USER_TOOL10.

Du kan ge förslag till användarna för att hjälpa dem att välja kataloger och argument för de externa program som ska anropas som verktyg. Det gör du genom att skapa två popup-menyer i resursredigeraren. I följande exempel namnges dessa som IDR_MENU_ARGS och IDR_MENU_DIRS. För varje kommando i de här menyerna definierar du en sträng i programsträngstabellen. Resurs-ID:t för strängen måste vara lika med kommando-ID:t.

Du kan också skapa en härledd klass från CUserTool-klassen för att ersätta standardimplementeringen. Det gör du genom att skicka körningsinformationen för din härledda klass som den fjärde parametern i CWinAppEx::EnableUserTools, i stället för RUNTIME_CLASS(CUserTool Class).

När du har definierat lämpliga konstanter anropar du CWinAppEx::EnableUserTools för att aktivera användardefinierade verktyg.

Följande metodanrop visar hur du använder dessa konstanter:

EnableUserTools(ID_TOOLS_ENTRY,
                ID_USER_TOOL1,
                ID_USER_TOOL10,
                RUNTIME_CLASS(CUserTool),
                IDR_MENU_ARGS,
                IDR_MENU_DIRS);

I det här exemplet inkluderas fliken Verktyg i dialogrutan Anpassning . Ramverket ersätter alla kommandon som matchar kommando-ID ID_TOOLS_ENTRY :t på valfri meny med uppsättningen med för närvarande definierade användarverktyg när en användare öppnar den menyn. Kommando-ID:na ID_USER_TOOL1 via ID_USER_TOOL10 är reserverade för användning för användardefinierade verktyg. Klassen CUserTool Class hanterar anrop till användarverktygen. På verktygsfliken i dialogrutan Anpassning finns knappar till höger om argument- och kataloginmatningsfälten för att komma åt menyerna IDR_MENU_ARGS och IDR_MENU_DIRS. När en användare väljer ett kommando från en av dessa menyer läggs ramverket till i lämplig textruta den sträng som har resurs-ID:t lika med kommando-ID:t.

Inklusive fördefinierade verktyg

Om du vill fördefiniera vissa verktyg vid programstarten måste du åsidosätta metoden CFrameWnd::LoadFrame i programmets huvudfönster. I den metoden måste du utföra följande steg.

Så här lägger du till nya verktyg i LoadFrame
  1. Hämta en pekare till CUserToolsManager Class-objektet genom att anropa CWinAppEx::GetUserToolsManager.

  2. För varje verktyg som du vill skapa anropar du CUserToolsManager::CreateNewTool. Den här metoden returnerar en pekare till ett CUserTool-klassobjekt och lägger till det nyligen skapade användarverktyget i den interna samlingen med verktyg. Om du angav körningsinformationen för en härledd klass av CUserTool-klass som den fjärde parametern för CWinAppEx::EnableUserTools, instansierar CUserToolsManager::CreateNewTool och returnerar en instans av den klassen i stället.

  3. För varje verktyg, ställ in dess textetikett genom att ange CUserTool::m_strLabel och ställ in dess kommando genom att anropa CUserTool::SetCommand. Standardimplementeringen av CUserTool-klassen hämtar automatiskt tillgängliga ikoner från programmet som anges i anropet till SetCommand.

Se även

Anpassning för MFC
CUserTool-klass
CUserToolsManager-klass
CWinAppEx-klass