CColorDialog, classe
Vous permet d’incorporer une boîte de dialogue de sélection de couleurs dans votre application.
Syntaxe
class CColorDialog : public CCommonDialog
Membres
Constructeurs publics
Nom | Description |
---|---|
CColorDialog ::CColorDialog | Construit un objet CColorDialog . |
Méthodes publiques
Nom | Description |
---|---|
CColorDialog ::D oModal | Affiche une boîte de dialogue couleur et permet à l’utilisateur d’effectuer une sélection. |
CColorDialog ::GetColor | Retourne une COLORREF structure contenant les valeurs de la couleur sélectionnée. |
CColorDialog ::GetSavedCustomColors | Récupère les couleurs personnalisées créées par l’utilisateur. |
CColorDialog ::SetCurrentColor | Force la sélection de couleur actuelle à la couleur spécifiée. |
Méthodes protégées
Nom | Description |
---|---|
CColorDialog ::OnColorOK | Remplacez la valeur pour valider la couleur entrée dans la boîte de dialogue. |
Membres de données publics
Nom | Description |
---|---|
CColorDialog ::m_cc | Structure utilisée pour personnaliser les paramètres de la boîte de dialogue. |
Notes
Un CColorDialog
objet est une boîte de dialogue avec une liste de couleurs définies pour le système d’affichage. L’utilisateur peut sélectionner ou créer une couleur particulière dans la liste, qui est ensuite renvoyée à l’application lorsque la boîte de dialogue se ferme.
Pour construire un CColorDialog
objet, utilisez le constructeur fourni ou dérivez une nouvelle classe et utilisez votre propre constructeur personnalisé.
Une fois la boîte de dialogue construite, vous pouvez définir ou modifier toutes les valeurs de la structure m_cc pour initialiser les valeurs des contrôles de la boîte de dialogue. La structure m_cc est de type CHOOSECOLOR.
Après avoir initialisé les contrôles de la boîte de dialogue, appelez la DoModal
fonction membre pour afficher la boîte de dialogue et autoriser l’utilisateur à sélectionner une couleur. DoModal
renvoie la sélection de l’utilisateur du bouton OK (IDOK) ou Cancel (IDCANCEL) de la boîte de dialogue.
Si DoModal
retourne IDOK, vous pouvez utiliser l’une des CColorDialog
fonctions membres pour récupérer l’entrée d’informations par l’utilisateur.
Vous pouvez utiliser la fonction Windows CommDlgExtendedError pour déterminer si une erreur s’est produite lors de l’initialisation de la boîte de dialogue et pour en savoir plus sur l’erreur.
CColorDialog
s’appuie sur le fichier COMMDLG.DLL fourni avec Windows versions 3.1 et ultérieures.
Pour personnaliser la boîte de dialogue, dérivez une classe de CColorDialog
, fournissez un modèle de dialogue personnalisé et ajoutez un mappage de messages pour traiter les messages de notification à partir des contrôles étendus. Tous les messages non traités doivent être passés à la classe de base.
La personnalisation de la fonction de hook n’est pas nécessaire.
Remarque
Sur certaines installations, l’objet CColorDialog
ne s’affiche pas avec un arrière-plan gris si vous avez utilisé l’infrastructure pour faire griser d’autres CDialog
objets.
Pour plus d’informations sur l’utilisation CColorDialog
, consultez Classes de dialogue courantes
Hiérarchie d'héritage
CColorDialog
Spécifications
En-tête : afxdlgs.h
CColorDialog ::CColorDialog
Construit un objet CColorDialog
.
CColorDialog(
COLORREF clrInit = 0,
DWORD dwFlags = 0,
CWnd* pParentWnd = NULL);
Paramètres
clrInit
Sélection de couleur par défaut. Si aucune valeur n’est spécifiée, la valeur par défaut est RVB(0,0,0) (noir).
dwFlags
Ensemble d’indicateurs qui personnalisent la fonction et l’apparence de la boîte de dialogue. Pour plus d’informations, consultez la structure CHOOSECOLOR dans le Kit de développement logiciel (SDK) Windows.
pParentWnd
Pointeur vers la fenêtre parent ou propriétaire de la boîte de dialogue.
Exemple
// 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 ::D oModal
Appelez cette fonction pour afficher la boîte de dialogue Couleur commune de Windows et autoriser l’utilisateur à sélectionner une couleur.
virtual INT_PTR DoModal();
Valeur de retour
IDOK ou IDCANCEL. Si IDCANCEL est retourné, appelez la fonction Windows CommDlgExtendedError pour déterminer si une erreur s’est produite.
IDOK et IDCANCEL sont des constantes qui indiquent si l’utilisateur a sélectionné le bouton OK ou Annuler.
Notes
Si vous souhaitez initialiser les différentes options de boîte de dialogue de couleur en définissant les membres de la structure m_cc , vous devez le faire avant d’appeler DoModal
, mais après la construction de l’objet de boîte de dialogue.
Après l’appel DoModal
, vous pouvez appeler d’autres fonctions membres pour récupérer les paramètres ou l’entrée d’informations par l’utilisateur dans la boîte de dialogue.
Exemple
Consultez l’exemple de CColorDialog ::CColorDialog.
CColorDialog ::GetColor
Appelez cette fonction après avoir appelé DoModal
pour récupérer les informations sur la couleur sélectionnée par l’utilisateur.
COLORREF GetColor() const;
Valeur de retour
Valeur COLORREF qui contient les informations RVB de la couleur sélectionnée dans la boîte de dialogue couleur.
Exemple
// 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
CColorDialog
les objets permettent à l’utilisateur, en plus de choisir des couleurs, de définir jusqu’à 16 couleurs personnalisées.
static COLORREF* PASCAL GetSavedCustomColors();
Valeur de retour
Pointeur vers un tableau de 16 valeurs de couleurs RVB qui stocke les couleurs personnalisées créées par l’utilisateur.
Notes
La GetSavedCustomColors
fonction membre fournit l’accès à ces couleurs. Ces couleurs peuvent être récupérées après que DoModal retourne IDOK.
Chacune des 16 valeurs RVB du tableau retourné est initialisée en RVB(255 255 255 255) (blanc). Les couleurs personnalisées choisies par l’utilisateur sont enregistrées uniquement entre les appels de boîte de dialogue dans l’application. Si vous souhaitez enregistrer ces couleurs entre les appels de l’application, vous devez les enregistrer d’une autre manière, par exemple dans une initialisation (. Fichier INI).
Exemple
// 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
Structure de type CHOOSECOLOR, dont les membres stockent les caractéristiques et les valeurs de la boîte de dialogue.
CHOOSECOLOR m_cc;
Notes
Après avoir construit un CColorDialog
objet, vous pouvez utiliser m_cc pour définir différents aspects de la boîte de dialogue avant d’appeler la fonction membre DoModal .
Exemple
// 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
Remplacez la valeur pour valider la couleur entrée dans la boîte de dialogue.
virtual BOOL OnColorOK();
Valeur de retour
Différent de zéro si la boîte de dialogue ne doit pas être ignorée ; sinon, 0 pour accepter la couleur entrée.
Notes
Remplacez cette fonction uniquement si vous souhaitez fournir une validation personnalisée de la couleur sélectionnée par l’utilisateur dans la boîte de dialogue couleur.
L’utilisateur peut sélectionner une couleur selon l’une des deux méthodes suivantes :
Cliquez sur une couleur dans la palette de couleurs. Les valeurs RVB de la couleur sélectionnée sont ensuite reflétées dans les zones d’édition RVB appropriées.
Entrée de valeurs dans les zones d’édition RVB
OnColorOK
La substitution vous permet de rejeter une couleur que l’utilisateur entre dans une boîte de dialogue de couleur commune pour une raison spécifique à l’application.
Normalement, vous n’avez pas besoin d’utiliser cette fonction, car l’infrastructure fournit la validation par défaut des couleurs et affiche une boîte de message si une couleur non valide est entrée.
Vous pouvez appeler SetCurrentColor à partir de l’intérieur OnColorOK
pour forcer une sélection de couleurs. Une fois OnColorOK
déclenché (autrement dit, l’utilisateur clique sur OK pour accepter la modification de couleur), vous pouvez appeler GetColor pour obtenir la valeur RVB de la nouvelle couleur.
Exemple
// 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
Appelez cette fonction après avoir appelé DoModal
pour forcer la sélection de couleur actuelle à la valeur de couleur spécifiée dans clr.
void SetCurrentColor(COLORREF clr);
Paramètres
clr
Valeur de couleur RVB.
Notes
Cette fonction est appelée à partir d’un gestionnaire de messages ou OnColorOK
. La boîte de dialogue met automatiquement à jour la sélection de l’utilisateur en fonction de la valeur du paramètre clr .
Exemple
Consultez l’exemple de CColorDialog ::OnColorOK.
Voir aussi
Exemple MFC MDI
Exemple DRAWCLI MFC
CCommonDialog, classe
Graphique hiérarchique