Compartir a través de


Controles ActiveX MFC: Agregar otra página de propiedades personalizadas

En ocasiones un control ActiveX tendrá más propiedades que las que razonablemente caben en una página de propiedades. En este caso, se pueden agregar páginas de propiedades al control ActiveX para mostrar las propiedades.

En este artículo se expone cómo se agregan nuevas páginas de propiedades a un control ActiveX que ya tiene al menos una página de propiedades. En el artículo Controles ActiveX MFC: Usar páginas de propiedades estándar se proporciona más información sobre las páginas de propiedades estándar.

En los procedimientos siguientes se usa un marco de control ActiveX de ejemplo creado por el Asistente para controles ActiveX. Por lo tanto, los nombres de clase e identificadores usados en este ejemplo son únicos.

Para más información sobre el uso de páginas de propiedades en un control ActiveX, vea los artículos siguientes:

  • Controles ActiveX MFC: Páginas de propiedades

  • Controles ActiveX MFC: Usar páginas de propiedades estándar

    Nota:

    Se recomienda encarecidamente ajustar las nuevas páginas de propiedades al tamaño estándar de las páginas de propiedades del control ActiveX. Las páginas de propiedades de color e imágenes de stock miden 250 x 62 unidades de diálogo (DLU). La página de propiedades de fuente estándar mide 250 x 110 DLL. La página de propiedades predeterminada creada por el Asistente para controles ActiveX utiliza el estándar DLU 250x62.

Para insertar una nueva plantilla de página de propiedades en el proyecto

  1. Con el proyecto de control abierto, abra Vista de recursos en el área de trabajo del proyecto.

  2. Haga clic con el botón derecho en la Vista de recursos para abrir el menú contextual y haga clic en Agregar recurso.

  3. Expanda el nodo Diálogo y seleccione IDD_OLE_PROPPAGE_SMALL.

  4. Haga clic en Nuevo para agregar el recurso al proyecto.

  5. Seleccione la nueva plantilla de la página de propiedades para actualizar la ventana Propiedades en Vista de recursos.

  6. Introduzca un nuevo valor de la propiedad Id. En el ejemplo se emplea IDD_PROPPAGE_NEWPAGE.

  7. Haga clic en Guardar en la barra de herramientas.

Para asociar la nueva plantilla a una clase

  1. Abra la Vista de clases.

  2. Haga clic con el botón derecho en la Vista de clases para abrir el menú contextual.

  3. En el menú contextual, haga clic en Agregar y después en Agregar clase.

    De este modo se abre el cuadro de diálogo Agregar clase.

  4. Haga doble clic en la plantilla Clase MFC.

  5. En el cuadro Nombre de clase del Asistente para clases MFC, escriba el nombre de la nueva clase de diálogo. (CAddtlPropPage en este ejemplo).

  6. Haga clic en Cambiar para cambiar los nombres de archivo. Escriba los nombres de los archivos de encabezado e implementación o acepte los nombres predeterminados.

  7. En el cuadro Clase base, seleccione COlePropertyPage.

  8. En el cuadro Id. de diálogo, seleccione IDD_PROPPAGE_NEWPAGE.

  9. Haga clic en Finalizar para crear la clase.

Para que los usuarios del control puedan acceder a esta nueva página de propiedades, aplique los siguientes cambios en la sección de macros de página de propiedades del control en el archivo de implementación de control:

BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
   PROPPAGEID(CMyAxUIPropPage::guid)
   PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)

Tenga en cuenta que debe aumentar el segundo parámetro de la macro BEGIN_PROPPAGEIDS, recuento de páginas de propiedades, de 1 a 2.

También debe modificar el archivo de implementación de control (.CPP) para que incluya el encabezado (.H) de la nueva clase de página de propiedades.

En el siguiente paso se crean dos nuevos recursos de cadena que proporcionarán un nombre de tipo y un título de la nueva página de propiedades.

Para agregar nuevos recursos de cadena a una página de propiedades

  1. Con el proyecto de control abierto, abra Vista de recursos.

  2. Haga doble clic en la carpeta Tabla de cadenas y, a continuación, haga doble clic en el recurso de tabla de cadenas existente al que quiera agregar una cadena.

    De este modo se abre la tabla de cadenas en una ventana.

  3. Seleccione la línea en blanco al final de la tabla de cadenas y escriba el texto o título de la cadena, por ejemplo «Página de propiedades adicionales».

    De este modo se abre una página Propiedades de cadena en la que se muestran los cuadros Título e Id. En el cuadro Título está la cadena que ha escrito.

  4. En el cuadro Id. seleccione o escriba un id. de la cadena. Presione Entrar al terminar.

    En este ejemplo se usa IDS_SAMPLE_ADDPAGE para el nombre de tipo de la nueva propiedad de página.

  5. Repita los pasos 3 y 4 usando IDS_SAMPLE_ADDPPG_CAPTION para el id. y «Página de propiedades adicionales» para el título.

  6. En el archivo .CPP de la nueva clase de página de propiedades, en este ejemplo CAddtlPropPage, modifique el CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry para que AfxOleRegisterPropertyPageClass pase IDS_SAMPLE_ADDPAGE, como en el ejemplo siguiente:

    BOOL CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry(BOOL bRegister)
    {
       if (bRegister)
          return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(),
             m_clsid, IDS_SAMPLE_ADDPAGE);
       else
          return AfxOleUnregisterClass(m_clsid, NULL);
    }
    
  7. Modifique el constructor de CAddtlPropPage para pasar IDS_SAMPLE_ADDPPG_CAPTION al constructor COlePropertyPage de la siguiente manera:

    CAddtlPropPage::CAddtlPropPage() :
       COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION)
    {
    
    }
    

Después de las modificaciones necesarias, construya de nuevo el proyecto y use el Contenedor de prueba para probar la nueva página de propiedades. Consulte Probar propiedades y eventos con un contenedor de prueba para obtener información acerca de cómo acceder al contenedor de prueba.

Consulte también

Controles ActiveX de MFC