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 CColorDialog
Memberfunktionen 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 COMMDLG.DLL Datei, die mit Windows-Versionen 3.1 und höher ausgeliefert wird.
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 CColorDialog
finden Sie unter "Allgemeine Dialogklassen".
Vererbungshierarchie
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 DoModal
kö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 OnColorOK
eines 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