Compartir a través de


Clase CColorDialog

Permite incorporar un cuadro de diálogo de selección de color en la aplicación.

Sintaxis

class CColorDialog : public CCommonDialog

Miembros

Constructores públicos

Nombre Descripción
CColorDialog::CColorDialog Construye un objeto CColorDialog.

Métodos públicos

Nombre Descripción
CColorDialog::DoModal Muestra un cuadro de diálogo de color y permite al usuario realizar una selección.
CColorDialog::GetColor Devuelve una estructura COLORREF que contiene los valores del color seleccionado.
CColorDialog::GetSavedCustomColors Recupera colores personalizados creados por el usuario.
CColorDialog::SetCurrentColor Fuerza la selección de color actual al color especificado.

Métodos protegidos

Nombre Descripción
CColorDialog::OnColorOK Invalídelo para validar el color especificado en el cuadro de diálogo.

Miembros de datos públicos

Nombre Descripción
CColorDialog::m_cc Estructura usada para personalizar la configuración del cuadro de diálogo.

Comentarios

Un objeto CColorDialog es un cuadro de diálogo con una lista de colores definidos para el sistema de visualización. El usuario puede seleccionar o crear un color determinado de la lista, lo que se notifica a la aplicación cuando se cierra el cuadro de diálogo.

Para construir un objeto CColorDialog, use el constructor proporcionado o derive una nueva clase y use su propio constructor personalizado.

Una vez se ha construido el cuadro de diálogo, puede establecer o modificar los valores de la estructura m_cc para inicializar los valores de los controles del cuadro de diálogo. La estructura m_cc es de tipo CHOOSECOLOR.

Después de inicializar los controles del cuadro de diálogo, llame a la función miembro DoModal para mostrar el cuadro de diálogo y permita al usuario seleccionar un color. DoModal devuelve la selección del usuario del botón Aceptar (IDOK) o Cancelar (IDCANCEL) del cuadro de diálogo.

Si DoModal devuelve IDOK, puede usar una de las funciones miembro de CColorDialog para recuperar la entrada de información por parte del usuario.

Puede usar la función CommDlgExtendedError de Windows para determinar si se produjo un error durante la inicialización del cuadro de diálogo y obtener más información sobre el error.

CColorDialog se basa en el archivo COMMDLG.DLL que se incluye con las versiones 3.1 y posteriores de Windows.

Para personalizar el cuadro de diálogo, derive una clase de CColorDialog, proporcione una plantilla de diálogo personalizada y agregue un mapa de mensajes para procesar los mensajes de notificación de los controles extendidos. Los mensajes no procesados deben pasarse a la clase base.

No es necesario personalizar la función de enlace.

Nota:

En algunas instalaciones, el objeto CColorDialog no se mostrará con un fondo gris si ha usado el marco para que otros objetos CDialog sean grises.

Para más información sobre el uso de CColorDialog, vea Clases de cuadros de diálogo comunes

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CColorDialog

Requisitos

Encabezado: afxdlgs.h

CColorDialog::CColorDialog

Construye un objeto CColorDialog.

CColorDialog(
    COLORREF clrInit = 0,
    DWORD dwFlags = 0,
    CWnd* pParentWnd = NULL);

Parámetros

clrInit
Selección de color predeterminada. Si no se especifica ningún valor, el valor predeterminado es RGB(0,0,0) (negro).

dwFlags
Conjunto de marcas que personalizan la función y la apariencia del cuadro de diálogo. Para más información, consulte la estructura CHOOSECOLOR en Windows SDK.

pParentWnd
Puntero a la ventana principal o propietaria del cuadro de diálogo.

Ejemplo

// Show the Color dialog with all the default settings.
CColorDialog dlg1;
dlg1.DoModal();

// Show the fully opened Color dialog with red as the selected color.
CColorDialog dlg2(RGB(255, 0, 0), CC_FULLOPEN);
dlg2.DoModal();

CColorDialog::DoModal

Llame a esta función para mostrar el cuadro de diálogo de color común de Windows y permitir al usuario seleccionar un color.

virtual INT_PTR DoModal();

Valor devuelto

IDOK o IDCANCEL. Si se devuelve IDCANCEL, llame a la función CommDlgExtendedError de Windows para determinar si se ha producido un error.

IDOK y IDCANCEL son constantes que indican si el usuario seleccionó el botón Aceptar o Cancelar.

Comentarios

Si desea inicializar las distintas opciones de cuadro de diálogo de color estableciendo miembros de la estructura m_cc, debe hacerlo antes de llamar a DoModal pero después de construir el objeto de cuadro de diálogo.

Después de llamar a DoModal, puede llamar a otras funciones miembro para recuperar la configuración o la información de entrada del usuario en el cuadro de diálogo.

Ejemplo

Vea el ejemplo de CColorDialog::CColorDialog.

CColorDialog::GetColor

Llame a esta función después de llamar a DoModal para recuperar la información sobre el color seleccionado por el usuario.

COLORREF GetColor() const;

Valor devuelto

Valor COLORREF que contiene la información RGB del color seleccionado en el cuadro de diálogo de color.

Ejemplo

// Get the selected color from the CColorDialog.
CColorDialog dlg;
if (dlg.DoModal() == IDOK)
{
   COLORREF color = dlg.GetColor();
   TRACE(_T("RGB value of the selected color - red = %u, ")
         _T("green = %u, blue = %u\n"),
         GetRValue(color), GetGValue(color), GetBValue(color));
}

CColorDialog::GetSavedCustomColors

Los objetos CColorDialog permiten al usuario, además de elegir colores, definir hasta 16 colores personalizados.

static COLORREF* PASCAL GetSavedCustomColors();

Valor devuelto

Puntero a una matriz de 16 valores de color RGB que almacena colores personalizados creados por el usuario.

Comentarios

La función miembro GetSavedCustomColors proporciona acceso a estos colores. Estos colores se pueden recuperar después de que DoModal devuelva IDOK.

Cada uno de los 16 valores RGB de la matriz devuelta se inicializa en RGB(255,255,255) (blanco). Los colores personalizados elegidos por el usuario solo se guardan entre invocaciones de cuadro de diálogo dentro de la aplicación. Si desea guardar estos colores entre invocaciones de la aplicación, debe guardarlos de alguna otra manera, como en un archivo de inicialización (.INI).

Ejemplo

// Get a pointer to an array of 16 RGB color values that stores
// custom colors created by the user from CColorDialog.
CColorDialog dlg;
if (dlg.DoModal() == IDOK)
{
   COLORREF *ccolor = dlg.GetSavedCustomColors();
   for (int i = 0; i < 16; i++)
   {
      TRACE(_T("RGB value of the selected color - red = %u, ")
            _T("green = %u, blue = %u\n"),
            GetRValue(ccolor[i]),
            GetGValue(ccolor[i]),
            GetBValue(ccolor[i]));
   }
}

CColorDialog::m_cc

Estructura de tipo CHOOSECOLOR, cuyos miembros almacenan las características y los valores del cuadro de diálogo.

CHOOSECOLOR m_cc;

Comentarios

Después de construir un objeto CColorDialog, puede usar m_cc para establecer varios aspectos del cuadro de diálogo antes de llamar a la función miembro DoModal.

Ejemplo

// The code below uses CColorDialog::m_cc data member to
// customize the settings of CColorDialog. The CColorDialog will
// be shown as full open and with red as the selected color.
CColorDialog dlg;
dlg.m_cc.Flags |= CC_FULLOPEN | CC_RGBINIT;
dlg.m_cc.rgbResult = RGB(255, 0, 0);
dlg.DoModal();

CColorDialog::OnColorOK

Invalídelo para validar el color especificado en el cuadro de diálogo.

virtual BOOL OnColorOK();

Valor devuelto

Distinto de cero si no se debe descartar el cuadro de diálogo; de lo contrario, 0 para aceptar el color que se especificó.

Comentarios

Invalide esta función solo si desea proporcionar una validación personalizada del color que el usuario selecciona en el cuadro de diálogo de color.

El usuario puede seleccionar un color por uno de los dos métodos siguientes:

  • Hacer clic en un color en la paleta de colores. Los valores RGB del color seleccionado se reflejan en los cuadros de edición RGB adecuados.

  • Escribir valores en los cuadros de edición RGB

La invalidación de OnColorOK permite rechazar un color que el usuario escribe en un cuadro de diálogo de color común por cualquier motivo específico de la aplicación.

Normalmente, no es necesario usar esta función porque el marco proporciona la validación predeterminada de colores y muestra un cuadro de mensaje si se escribe un color no válido.

Puedes llamar a SetCurrentColor desde dentro de OnColorOK para forzar una selección de color. Una vez OnColorOK se haya activado (es decir, el usuario hace clic en Aceptar para aceptar el cambio de color), puede llamar a GetColor para obtener el valor RGB del nuevo color.

Ejemplo

// Override OnColorOK to validate the color entered to the
// Red, Green, and Blue edit controls. If the color
// is BLACK (i.e. RGB(0, 0,0)), then force the current color
// selection to be the color initially selected when the
// dialog box is created. The color dialog won't close so
// user can enter a new color.
BOOL CMyColorDlg::OnColorOK()
{
   // Value in Red edit control.
   COLORREF clrref = GetColor();
   if (RGB(0, 0, 0) == clrref)
   {
      AfxMessageBox(_T("BLACK is not an acceptable color. ")
                    _T("Please enter a color again"));

      // GetColor() returns initially selected color.
      SetCurrentColor(GetColor());

      // Won't dismiss color dialog.
      return TRUE;
   }

   // OK to dismiss color dialog.
   return FALSE;
}

CColorDialog::SetCurrentColor

Llame a esta función después de llamar a DoModal para forzar la selección de color actual al valor de color especificado en clr.

void SetCurrentColor(COLORREF clr);

Parámetros

clr
Un valor de color RGB.

Comentarios

Se llama a esta función desde un controlador de mensajes o OnColorOK. El cuadro de diálogo actualizará de forma automática la selección del usuario en función del valor del parámetro clr.

Ejemplo

Vea el ejemplo de CColorDialog::OnColorOK.

Consulte también

Ejemplo MDI de MFC
Ejemplo DRAWCLI de MFC
CCommonDialog (clase)
Gráfico de jerarquías