Hay varios componentes de interfaz de usuario de la MMC snap-in de objetos que se pueden personalizar. Algunas de estas áreas, tales como botones de la barra de herramientas y elementos de menú, afectan a los componentes de la aplicación MMC. El componente final es una hoja de propiedades estándar que muestra las propiedades del complemento de objeto, que puede ser personalizada por el usuario. De forma predeterminada, el asistente complemento MMC no generar ningún elementos de interfaz de usuario personalizados. Sin embargo, existen marcadores de posición en todo el código objeto de complemento que indican dónde pueden ir los elementos de interfaz de usuario personalizados.
Un área que puede personalizar es el menú contextual para los elementos del objeto snap-in. Cuatro elementos de menú están disponibles para la personalización: Top, Nueva tarea y vista. El complemento asistente crea un recurso de menú con marcadores de posición para las cuatro ranuras.
Porque el recurso de menú es conocido por el objeto de complemento, agregar elementos de menú personalizados necesitan bajo la ranura adecuada y aparecen automáticamente en el menú contextual de cualquier elemento del complemento. El elemento complemento sabe qué recurso de menú a utilizar porque el objeto de datos contiene la siguiente declaración:
SNAPINMENUID(IDR_MMCSNAP_MENU)
El SDK de la plataforma proporciona una interfaz ( IExtendContextMenu) para personalizar el menú contextual de un elemento de ajuste. En la mayoría de los casos, no necesita llamar a esta interfaz directamente, pero si el complemento está avanzado, obtener más información sobre esta interfaz está disponible en el SDK de la plataforma.
Si su objeto complemento utiliza una barra de herramientas personalizada, puede agregar cualquier número de botones, una vez que se ha creado el recurso de barra de herramientas. Entonces puede proporcionar controladores para cada botón para manejar tareas personalizadas. Para obtener más información, consulte Cómo agregar un recurso de barra de herramientas para el objeto Snap-In?.
El SDK de la plataforma proporciona una interfaz ( IExtendControlbar) para personalizar la barra de control de un snap-in. En la mayoría de los casos, no necesita llamar a esta interfaz directamente, pero si el complemento está avanzado, obtener más información sobre esta interfaz está disponible en el SDK de la plataforma.
Cada elemento de ajuste puede mostrar una hoja de propiedades estándar, accesible desde el menú contextual cuando el usuario hace el ratón.
De forma predeterminada, el asistente complemento MMC no proporciona la implementación para esta funcionalidad. Sin embargo, si selecciona la casilla de verificación IExtendPropertySheet , el asistente crea una clase de página de propiedad predeterminado ( CSnapNamePage , derivado de CSnapInPropertyPageImpl) y un recurso de cuadro de diálogo (IDD_SnapName) para la hoja de propiedades.
Para completar esta función, agregar controles que permiten al usuario modificar las propiedades del elemento complemento.
Para agregar páginas adicionales a la hoja de propiedades, necesita una nueva clase de página de propiedad, un nuevo recurso de cuadro de diálogo y código adicional en el método CreatePropertyPages de la clase de datos. En este ejemplo, la nueva clase se llama CMMCSnapPage2 y es el recurso de cuadro de diálogoIDD_MMCSNAP2.
Una vez que tienes las clases necesarias y recursos, añadir al método CreatePropertyPages para crear y agregar la nueva página de propiedades de la hoja. Por ejemplo, el código siguiente agrega una nueva página ( pPage2 ), implementado con la nueva CMMCSnapPage2 clase, al objeto de complemento:
CMMCSnapPage2 * pPage2 = new CMMCSnapPage2(_T("MMCSnap2"));
lpProvider-gt;AddPage (pPage2 - > Create())
El SDK de la plataforma proporciona una interfaz ( IExtendPropertySheet) para personalizar la hoja de propiedades de un snap-in. En la mayoría de los casos, no necesita llamar a esta interfaz directamente, pero si el complemento está avanzado, obtener más información sobre esta interfaz está disponible en el SDK de la plataforma.