Condividi tramite


Strumenti definiti dall'utente

MFC supporta gli strumenti definiti dall'utente. Uno strumento definito dall'utente è un comando speciale che esegue un programma esterno specificato dall'utente. È possibile usare il processo di personalizzazione per gestire gli strumenti definiti dall'utente. Tuttavia, non è possibile usare questo processo se l'oggetto applicazione non è derivato dalla classe CWinAppEx. Per altre informazioni sulla personalizzazione, vedere Personalizzazione per MFC.

Se è stato abilitato il supporto degli strumenti definiti dall'utente, la finestra di dialogo di personalizzazione include automaticamente la scheda Strumenti . La figura seguente mostra la pagina Strumenti .

Tools tab in the Customize dialog box.
Scheda Strumenti della finestra di dialogo Personalizzazione

Abilitazione del supporto degli strumenti definiti dall'utente

Per abilitare gli strumenti definiti dall'utente in un'applicazione, chiamare CWinAppEx::EnableUserTools. Tuttavia, è prima necessario definire diverse costanti nei file di risorse dell'applicazione da usare come parametri per questa chiamata.

Nell'editor di risorse creare un comando fittizio che usa un ID comando appropriato. Nell'esempio seguente viene usato ID_TOOLS_ENTRY come ID comando. Questo ID comando contrassegna una posizione in uno o più menu in cui il framework inserisce gli strumenti definiti dall'utente.

È necessario riservare alcuni ID consecutivi nella tabella di stringhe per rappresentare gli strumenti definiti dall'utente. Il numero di stringhe da riservare è uguale al numero massimo di strumenti utente che gli utenti possono definire. Nell'esempio seguente, questi vengono denominati ID_USER_TOOL1 tramite ID_USER_TOOL10.

È possibile offrire suggerimenti agli utenti per aiutarli a selezionare directory e argomenti per i programmi esterni che verranno chiamati come strumenti. A tale scopo, creare due menu popup nell'editor di risorse. Nell'esempio seguente vengono denominati IDR_MENU_ARGS e IDR_MENU_DIRS. Per ogni comando in questi menu, definire una stringa nella tabella delle stringhe dell'applicazione. L'ID risorsa della stringa deve essere uguale all'ID del comando.

È anche possibile creare una classe derivata dalla classe CUserTool per sostituire l'implementazione predefinita. A tale scopo, passare le informazioni di runtime per la classe derivata come quarto parametro in CWinAppEx::EnableUserTools, anziché RUNTIME_CLASS(classe CUserTool).

Dopo aver definito le costanti appropriate, chiamare CWinAppEx::EnableUserTools per abilitare gli strumenti definiti dall'utente.

La chiamata al metodo seguente illustra come usare queste costanti:

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

In questo esempio la scheda Strumenti verrà inclusa nella finestra di dialogo Personalizzazione . Il framework sostituirà qualsiasi comando che corrisponda all'ID ID_TOOLS_ENTRY comando in qualsiasi menu con il set di strumenti utente attualmente definiti ogni volta che un utente apre tale menu. Gli ID ID_USER_TOOL1 dei comandi tramite ID_USER_TOOL10 sono riservati per l'uso per gli strumenti definiti dall'utente. La classe CUserTool Class gestisce le chiamate agli strumenti utente. La scheda strumento della finestra di dialogo Personalizzazione fornisce pulsanti a destra dei campi di immissione dell'argomento e della directory per accedere ai menu IDR_MENU_ARGS e IDR_MENU_DIRS. Quando un utente seleziona un comando da uno di questi menu, il framework aggiunge alla casella di testo appropriata la stringa con l'ID risorsa uguale all'ID comando.

Inclusione di strumenti predefiniti

Se si desidera definire alcuni strumenti all'avvio dell'applicazione, è necessario eseguire l'override del metodo CFrameWnd::LoadFrame della finestra principale dell'applicazione. In questo metodo è necessario eseguire i passaggi seguenti.

Per aggiungere nuovi strumenti in LoadFrame
  1. Ottenere un puntatore all'oggetto Classe CUserToolsManager chiamando CWinAppEx::GetUserToolsManager.

  2. Per ogni strumento che si vuole creare, chiamare CUserToolsManager::CreateNewTool. Questo metodo restituisce un puntatore a un oggetto classe CUserTool e aggiunge lo strumento utente appena creato alla raccolta interna di strumenti. Se sono state fornite le informazioni di runtime per una classe derivata della classe CUserTool come quarto parametro di CWinAppEx::EnableUserTools, CUserToolsManager::CreateNewTool creerà un'istanza di tale classe e restituirà invece un'istanza di tale classe.

  3. Per ogni strumento, impostarne l'etichetta di testo impostando CUserTool::m_strLabel e impostandone il comando chiamando CUserTool::SetCommand. L'implementazione predefinita della classe CUserTool recupera automaticamente le icone disponibili dal programma specificato nella chiamata a SetCommand.

Vedi anche

Personalizzazione per MFC
Classe CUserTool
Classe CUserToolsManager
Classe CWinAppEx