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
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