Freigeben über


CColorDialog-Klasse

Ermöglicht ihnen die Integration eines Dialogfelds für die Farbauswahl in Ihre Anwendung.

Syntax

class CColorDialog : public CCommonDialog

Member

Öffentliche Konstruktoren

Name Beschreibung
CColorDialog::CColorDialog Erstellt ein CColorDialog-Objekt.

Öffentliche Methoden

Name Beschreibung
CColorDialog::D oModal Zeigt ein Farbdialogfeld an und ermöglicht es dem Benutzer, eine Auswahl vorzunehmen.
CColorDialog::GetColor Gibt eine COLORREF Struktur zurück, die die Werte der ausgewählten Farbe enthält.
CColorDialog::GetSavedCustomColors Ruft benutzerdefinierte Farben ab, die vom Benutzer erstellt wurden.
CColorDialog::SetCurrentColor Erzwingt die aktuelle Farbauswahl an die angegebene Farbe.

Geschützte Methoden

Name Beschreibung
CColorDialog::OnColorOK Überschreiben, um die in das Dialogfeld eingegebene Farbe zu überprüfen.

Öffentliche Datenmember

Name Beschreibung
CColorDialog::m_cc Eine Struktur, die zum Anpassen der Einstellungen des Dialogfelds verwendet wird.

Hinweise

Ein CColorDialog Objekt ist ein Dialogfeld mit einer Liste von Farben, die für das Anzeigesystem definiert sind. Der Benutzer kann eine bestimmte Farbe aus der Liste auswählen oder erstellen, die dann beim Beenden des Dialogfelds an die Anwendung zurück gemeldet wird.

Verwenden Sie zum Erstellen eines CColorDialog Objekts den bereitgestellten Konstruktor, oder leiten Sie eine neue Klasse ab, und verwenden Sie ihren eigenen benutzerdefinierten Konstruktor.

Nachdem das Dialogfeld erstellt wurde, können Sie werte in der m_cc Struktur festlegen oder ändern, um die Werte der Steuerelemente des Dialogfelds zu initialisieren. Die m_cc Struktur ist vom Typ CHOOSECOLOR.

Rufen Sie nach dem Initialisieren der Steuerelemente des Dialogfelds die DoModal Memberfunktion auf, um das Dialogfeld anzuzeigen und dem Benutzer die Auswahl einer Farbe zu ermöglichen. DoModal gibt die Benutzerauswahl der Schaltfläche "OK" (IDOK) des Dialogfelds oder der Schaltfläche "Abbrechen" (IDCANCEL) zurück.

Wenn DoModal IDOK zurückgegeben wird, können Sie eine der CColorDialogMemberfunktionen verwenden, um die Vom Benutzer eingegebenen Informationen abzurufen.

Sie können die Windows CommDlgExtendedError-Funktion verwenden, um zu ermitteln, ob während der Initialisierung des Dialogfelds ein Fehler aufgetreten ist, und um mehr über den Fehler zu erfahren.

CColorDialog basiert auf der DATEI COMMDLG.DLL, die im Lieferumfang von Windows-Versionen 3.1 und höher enthalten ist.

Um das Dialogfeld anzupassen, leiten Sie eine Klasse ab CColorDialog, stellen Sie eine benutzerdefinierte Dialogfeldvorlage bereit, und fügen Sie eine Meldungszuordnung hinzu, um die Benachrichtigungen aus den erweiterten Steuerelementen zu verarbeiten. Alle unverarbeiteten Nachrichten sollten an die Basisklasse übergeben werden.

Das Anpassen der Hook-Funktion ist nicht erforderlich.

Hinweis

Bei einigen Installationen wird das CColorDialog Objekt nicht mit einem grauen Hintergrund angezeigt, wenn Sie das Framework verwendet haben, um andere CDialog Objekte grau zu machen.

Weitere Informationen zur Verwendung CColorDialogfinden Sie unter "Allgemeine Dialogklassen".

Vererbungshierarchie

CObject

CCmdTarget

CWnd

Cdialog

CCommonDialog

CColorDialog

Anforderungen

Header: afxdlgs.h

CColorDialog::CColorDialog

Erstellt ein CColorDialog-Objekt.

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

Parameter

clrInit
Die Standardfarbauswahl. Wenn kein Wert angegeben ist, ist der Standardwert RGB(0,0,0) (schwarz).

dwFlags
Eine Reihe von Kennzeichen, die die Funktion und darstellung des Dialogfelds anpassen. Weitere Informationen finden Sie in der CHOOSECOLOR-Struktur im Windows SDK.

pParentWnd
Ein Zeiger auf das übergeordnete Oder Besitzerfenster des Dialogfelds.

Beispiel

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

Rufen Sie diese Funktion auf, um das Allgemeine Farbdialogfeld von Windows anzuzeigen und dem Benutzer die Auswahl einer Farbe zu ermöglichen.

virtual INT_PTR DoModal();

Rückgabewert

IDOK oder IDCANCEL. Wenn IDCANCEL zurückgegeben wird, rufen Sie die Windows CommDlgExtendedError-Funktion auf, um zu ermitteln, ob ein Fehler aufgetreten ist.

IDOK und IDCANCEL sind Konstanten, die angeben, ob der Benutzer die Schaltfläche "OK" oder "Abbrechen" ausgewählt hat.

Hinweise

Wenn Sie die verschiedenen Farbdialogfeldoptionen initialisieren möchten, indem Sie Elemente der m_cc-Struktur festlegen, sollten Sie dies vor dem Aufrufen DoModal , aber nach dem Erstellen des Dialogfeldobjekts tun.

Nach dem Aufrufen DoModalkönnen Sie andere Memberfunktionen aufrufen, um die Einstellungen oder Informationen vom Benutzer in das Dialogfeld abzurufen.

Beispiel

Sehen Sie sich das Beispiel für CColorDialog::CColorDialog an.

CColorDialog::GetColor

Rufen Sie diese Funktion nach dem Aufrufen DoModal auf, um die Informationen zur farbe abzurufen, die der Benutzer ausgewählt hat.

COLORREF GetColor() const;

Rückgabewert

Ein COLORREF-Wert , der die RGB-Informationen für die im Farbdialogfeld ausgewählte Farbe enthält.

Beispiel

// 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 objekte ermöglichen es dem Benutzer zusätzlich zur Auswahl von Farben, bis zu 16 benutzerdefinierte Farben zu definieren.

static COLORREF* PASCAL GetSavedCustomColors();

Rückgabewert

Ein Zeiger auf ein Array mit 16 RGB-Farbwerten, die vom Benutzer erstellte benutzerdefinierte Farben speichern.

Hinweise

Die GetSavedCustomColors Memberfunktion bietet Zugriff auf diese Farben. Diese Farben können abgerufen werden, nachdem DoModal IDOK zurückgegeben hat.

Jeder der 16 RGB-Werte im zurückgegebenen Array wird in RGB (255,255,255,255) (weiß) initialisiert. Die vom Benutzer ausgewählten benutzerdefinierten Farben werden nur zwischen Dialogfeldaufrufen innerhalb der Anwendung gespeichert. Wenn Sie diese Farben zwischen Aufrufen der Anwendung speichern möchten, müssen Sie sie auf andere Weise speichern, z. B. in einer Initialisierung (). INI)-Datei.

Beispiel

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

Eine Struktur vom Typ CHOOSECOLOR, deren Member die Merkmale und Werte des Dialogfelds speichern.

CHOOSECOLOR m_cc;

Hinweise

Nach dem Erstellen eines CColorDialog Objekts können Sie m_cc verwenden, um verschiedene Aspekte des Dialogfelds festzulegen, bevor Sie die DoModal-Memberfunktion aufrufen.

Beispiel

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

Überschreiben, um die in das Dialogfeld eingegebene Farbe zu überprüfen.

virtual BOOL OnColorOK();

Rückgabewert

Nonzero, wenn das Dialogfeld nicht geschlossen werden soll; andernfalls 0, um die eingegebene Farbe zu akzeptieren.

Hinweise

Überschreiben Sie diese Funktion nur, wenn Sie eine benutzerdefinierte Überprüfung der Farbe bereitstellen möchten, die der Benutzer im Dialogfeld "Farbe" auswählt.

Der Benutzer kann eine Farbe mit einer der folgenden beiden Methoden auswählen:

  • Klicken auf eine Farbe in der Farbpalette. Die RGB-Werte der ausgewählten Farbe werden dann in den entsprechenden RGB-Bearbeitungsfeldern wiedergegeben.

  • Eingeben von Werten in die RGB-Bearbeitungsfelder

Durch Das Überschreiben OnColorOK können Sie eine Farbe ablehnen, die der Benutzer aus anwendungsspezifischen Gründen in ein allgemeines Farbdialogfeld eingibt.

Normalerweise müssen Sie diese Funktion nicht verwenden, da das Framework die Standardüberprüfung von Farben bereitstellt und ein Meldungsfeld anzeigt, wenn eine ungültige Farbe eingegeben wird.

Sie können SetCurrentColor von innen OnColorOK aufrufen, um eine Farbauswahl zu erzwingen. Nach OnColorOK dem Auslösen (d. h. der Benutzer klickt auf "OK", um die Farbänderung zu akzeptieren), können Sie GetColor aufrufen, um den RGB-Wert der neuen Farbe abzurufen.

Beispiel

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

Rufen Sie diese Funktion nach dem Aufrufen DoModal auf, um die aktuelle Farbauswahl auf den in clr angegebenen Farbwert zu erzwingen.

void SetCurrentColor(COLORREF clr);

Parameter

Clr
Ein RGB-Farbwert.

Hinweise

Diese Funktion wird innerhalb eines Nachrichtenhandlers oder OnColorOKeines Nachrichtenhandlers aufgerufen. Das Dialogfeld aktualisiert die Auswahl des Benutzers automatisch basierend auf dem Wert des Clr-Parameters .

Beispiel

Sehen Sie sich das Beispiel für CColorDialog::OnColorOK an.

Siehe auch

MFC-Beispiel-MDI
MFC-Beispiel DRAWCLI
CCommonDialog-Klasse
Hierarchiediagramm