Share via


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 CColorDialogfonctions 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 les versions 3.1 et ultérieures de Windows.

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

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

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