Compartir a través de


Herramientas definidas por el usuario

MFC admite herramientas definidas por el usuario. Una herramienta definida por el usuario es un comando especial que ejecuta un programa externo especificado por el usuario. Puede usar el proceso de personalización para administrar herramientas definidas por el usuario. Sin embargo, no puede usar este proceso si el objeto de aplicación no se deriva de la clase CWinAppEx. Para obtener más información sobre la personalización, consulte Personalización para MFC.

Si ha habilitado la compatibilidad con herramientas definidas por el usuario, el cuadro de diálogo de personalización incluye automáticamente la pestaña Herramientas . En la ilustración siguiente se muestra la página Herramientas .

Pestaña Herramientas del cuadro de diálogo Personalizar.
Pestaña Herramientas del cuadro de diálogo Personalización

Habilitación de la compatibilidad con herramientas definidas por el usuario

Para habilitar las herramientas definidas por el usuario en una aplicación, llame a CWinAppEx::EnableUserTools. Sin embargo, primero debe definir varias constantes en los archivos de recursos de la aplicación para usarlos como parámetros para esta llamada.

En el editor de recursos, cree un comando ficticio que use un identificador de comando adecuado. En el ejemplo siguiente, se usa ID_TOOLS_ENTRY como identificador de comando. Este identificador de comando marca una ubicación en uno o varios menús donde el marco insertará las herramientas definidas por el usuario.

Debe reservar algunos identificadores consecutivos en la tabla de cadenas para representar las herramientas definidas por el usuario. El número de cadenas que se han reservado es igual al número máximo de herramientas de usuario que los usuarios pueden definir. En el ejemplo siguiente, se denominan ID_USER_TOOL1 a través de ID_USER_TOOL10.

Puede ofrecer sugerencias a los usuarios para ayudarles a seleccionar directorios y argumentos para los programas externos a los que se llamará como herramientas. Para ello, cree dos menús emergentes en el editor de recursos. En el ejemplo siguiente se denominan IDR_MENU_ARGS y IDR_MENU_DIRS. Para cada comando de estos menús, defina una cadena en la tabla de cadenas de aplicación. El identificador de recurso de la cadena debe ser igual al identificador de comando.

También puede crear una clase derivada de CUserTool Class para reemplazar la implementación predeterminada. Para ello, pase la información en tiempo de ejecución de la clase derivada como cuarto parámetro en CWinAppEx::EnableUserTools, en lugar de RUNTIME_CLASS(CUserTool Class).

Después de definir las constantes adecuadas, llame a CWinAppEx::EnableUserTools para habilitar las herramientas definidas por el usuario.

La siguiente llamada al método muestra cómo usar estas constantes:

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

En este ejemplo, la pestaña herramientas se incluirá en el cuadro de diálogo Personalización . El marco reemplazará cualquier comando que coincida con el identificador ID_TOOLS_ENTRY de comando en cualquier menú por el conjunto de herramientas de usuario definidas actualmente cada vez que un usuario abra ese menú. Los identificadores de comando a través ID_USER_TOOL10 están reservados para su uso para las herramientas definidas ID_USER_TOOL1 por el usuario. La clase CUserTool Class controla las llamadas a las herramientas de usuario. La pestaña de herramientas del cuadro de diálogo Personalización proporciona botones a la derecha de los campos de entrada de argumento y directorio para acceder a los menús IDR_MENU_ARGS y IDR_MENU_DIRS. Cuando un usuario selecciona un comando de uno de estos menús, el marco anexa al cuadro de texto adecuado la cadena que tiene el identificador de recurso igual al identificador de comando.

Incluir herramientas predefinidas

Si desea predefinir algunas herramientas en el inicio de la aplicación, debe invalidar el método CFrameWnd::LoadFrame de la ventana principal de la aplicación. En ese método, debe realizar los pasos siguientes.

Para agregar nuevas herramientas en LoadFrame
  1. Obtenga un puntero al objeto Class CUserToolsManager llamando a CWinAppEx::GetUserToolsManager.

  2. Para cada herramienta que quiera crear, llame a CUserToolsManager::CreateNewTool. Este método devuelve un puntero a un objeto Class de CUserTool y agrega la herramienta de usuario recién creada a la colección interna de herramientas. Si proporcionó la información en tiempo de ejecución de una clase derivada de CUserTool Class como cuarto parámetro de CWinAppEx::EnableUserTools, CUserToolsManager::CreateNewTool creará una instancia de esa clase y devolverá en su lugar una instancia de esa clase.

  3. Para cada herramienta, establezca su etiqueta de texto estableciendo CUserTool::m_strLabel y establezca su comando llamando a CUserTool::SetCommand. La implementación predeterminada de CUserTool Class recupera automáticamente los iconos disponibles del programa especificado en la llamada a SetCommand.

Consulte también

Personalización de MFC
CUserTool (clase)
CUserToolsManager (clase)
CWinAppEx (clase)