Classe CColorDialog
Consente di incorporare una finestra di dialogo di selezione dei colori nell'applicazione.
Sintassi
class CColorDialog : public CCommonDialog
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CColorDialog::CColorDialog | Costruisce un oggetto CColorDialog . |
Metodi pubblici
Nome | Descrizione |
---|---|
CColorDialog::D oModal | Visualizza una finestra di dialogo colore e consente all'utente di effettuare una selezione. |
CColorDialog::GetColor | Restituisce una COLORREF struttura contenente i valori del colore selezionato. |
CColorDialog::GetSavedCustomColors | Recupera i colori personalizzati creati dall'utente. |
CColorDialog::SetCurrentColor | Forza la selezione del colore corrente sul colore specificato. |
Metodi protetti
Nome | Descrizione |
---|---|
CColorDialog::OnColorOK | Eseguire l'override per convalidare il colore immesso nella finestra di dialogo. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CColorDialog::m_cc | Struttura utilizzata per personalizzare le impostazioni della finestra di dialogo. |
Osservazioni:
Un CColorDialog
oggetto è una finestra di dialogo con un elenco di colori definiti per il sistema di visualizzazione. L'utente può selezionare o creare un particolare colore dall'elenco, che viene quindi riportato di nuovo all'applicazione al termine della finestra di dialogo.
Per costruire un CColorDialog
oggetto, usare il costruttore fornito o derivare una nuova classe e usare il proprio costruttore personalizzato.
Dopo aver costruito la finestra di dialogo, è possibile impostare o modificare qualsiasi valore nella struttura m_cc per inizializzare i valori dei controlli della finestra di dialogo. La struttura m_cc è di tipo CHOOSECOLOR.
Dopo aver inizializzato i controlli della finestra di dialogo, chiamare la DoModal
funzione membro per visualizzare la finestra di dialogo e consentire all'utente di selezionare un colore. DoModal
restituisce la selezione dell'utente del pulsante OK (IDOK) o Annulla (IDCANCEL) della finestra di dialogo.
Se DoModal
restituisce IDOK, è possibile usare una delle CColorDialog
funzioni membro di per recuperare l'input delle informazioni dall'utente.
È possibile utilizzare la funzione Windows CommDlgExtendedError per determinare se si è verificato un errore durante l'inizializzazione della finestra di dialogo e per altre informazioni sull'errore.
CColorDialog
si basa sul file COMMDLG.DLL fornito con Windows 3.1 e versioni successive.
Per personalizzare la finestra di dialogo, derivare una classe da CColorDialog
, fornire un modello di finestra di dialogo personalizzato e aggiungere una mappa messaggi per elaborare i messaggi di notifica dai controlli estesi. Tutti i messaggi non elaborati devono essere passati alla classe base.
La personalizzazione della funzione hook non è necessaria.
Nota
In alcune installazioni l'oggetto CColorDialog
non verrà visualizzato con uno sfondo grigio se è stato usato il framework per rendere grigio altri CDialog
oggetti.
Per altre informazioni sull'uso CColorDialog
di , vedere Classi di dialoghi comuni
Gerarchia di ereditarietà
CColorDialog
Requisiti
Intestazione: afxdlgs.h
CColorDialog::CColorDialog
Costruisce un oggetto CColorDialog
.
CColorDialog(
COLORREF clrInit = 0,
DWORD dwFlags = 0,
CWnd* pParentWnd = NULL);
Parametri
clrInit
Selezione dei colori predefinita. Se non viene specificato alcun valore, il valore predefinito è RGB(0,0,0) (nero).
dwFlags
Set di flag che personalizzano la funzione e l'aspetto della finestra di dialogo. Per altre informazioni, vedere la struttura CHOOSECOLOR in Windows SDK.
pParentWnd
Puntatore alla finestra padre o proprietario della finestra di dialogo.
Esempio
// 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
Chiamare questa funzione per visualizzare la finestra di dialogo Colore comune di Windows e consentire all'utente di selezionare un colore.
virtual INT_PTR DoModal();
Valore restituito
IDOK o IDCANCEL. Se viene restituito IDCANCEL, chiamare la funzione Windows CommDlgExtendedError per determinare se si è verificato un errore.
IDOK e IDCANCEL sono costanti che indicano se l'utente ha selezionato il pulsante OK o Annulla.
Osservazioni:
Se si desidera inizializzare le varie opzioni della finestra di dialogo colore impostando i membri della struttura m_cc , è necessario eseguire questa operazione prima di chiamare DoModal
ma dopo la costruzione dell'oggetto finestra di dialogo.
Dopo aver chiamato DoModal
, è possibile chiamare altre funzioni membro per recuperare le impostazioni o l'input di informazioni da parte dell'utente nella finestra di dialogo.
Esempio
Vedere l'esempio per CColorDialog::CColorDialog.
CColorDialog::GetColor
Chiamare questa funzione dopo aver chiamato DoModal
per recuperare le informazioni sul colore selezionato dall'utente.
COLORREF GetColor() const;
Valore restituito
Valore COLORREF che contiene le informazioni RGB per il colore selezionato nella finestra di dialogo colore.
Esempio
// 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
gli oggetti consentono all'utente, oltre a scegliere colori, di definire fino a 16 colori personalizzati.
static COLORREF* PASCAL GetSavedCustomColors();
Valore restituito
Puntatore a una matrice di 16 valori di colore RGB che archivia i colori personalizzati creati dall'utente.
Osservazioni:
La GetSavedCustomColors
funzione membro fornisce l'accesso a questi colori. Questi colori possono essere recuperati dopo che DoModal restituisce IDOK.
Ognuno dei 16 valori RGB nella matrice restituita viene inizializzato in RGB(255.255.255) (bianco). I colori personalizzati scelti dall'utente vengono salvati solo tra le chiamate della finestra di dialogo all'interno dell'applicazione. Se si desidera salvare questi colori tra le chiamate dell'applicazione, è necessario salvarli in altro modo, ad esempio in un'inizializzazione (. File INI).
Esempio
// 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
Struttura di tipo CHOOSECOLOR, i cui membri archiviano le caratteristiche e i valori della finestra di dialogo.
CHOOSECOLOR m_cc;
Osservazioni:
Dopo aver costruito un CColorDialog
oggetto, è possibile usare m_cc per impostare vari aspetti della finestra di dialogo prima di chiamare la funzione membro DoModal .
Esempio
// 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
Eseguire l'override per convalidare il colore immesso nella finestra di dialogo.
virtual BOOL OnColorOK();
Valore restituito
Diverso da zero se la finestra di dialogo non deve essere chiusa; in caso contrario, 0 per accettare il colore immesso.
Osservazioni:
Eseguire l'override di questa funzione solo se si vuole fornire la convalida personalizzata del colore selezionato dall'utente nella finestra di dialogo colore.
L'utente può selezionare un colore in base a uno dei due metodi seguenti:
Fare clic su un colore nella tavolozza dei colori. I valori RGB del colore selezionato vengono quindi riflessi nelle caselle di modifica RGB appropriate.
Immissione di valori nelle caselle di modifica RGB
L'override OnColorOK
consente di rifiutare un colore immesso dall'utente in una finestra di dialogo di colore comune per qualsiasi motivo specifico dell'applicazione.
In genere, non è necessario usare questa funzione perché il framework fornisce la convalida predefinita dei colori e visualizza una finestra di messaggio se viene immesso un colore non valido.
È possibile chiamare SetCurrentColor dall'interno OnColorOK
per forzare una selezione di colori. Una volta OnColorOK
attivato (ovvero, l'utente fa clic su OK per accettare la modifica del colore), puoi chiamare GetColor per ottenere il valore RGB del nuovo colore.
Esempio
// 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
Chiamare questa funzione dopo aver chiamato DoModal
per forzare la selezione del colore corrente al valore di colore specificato in clr.
void SetCurrentColor(COLORREF clr);
Parametri
clr
Valore di colore RGB.
Osservazioni:
Questa funzione viene chiamata dall'interno di un gestore di messaggi o OnColorOK
. La finestra di dialogo aggiornerà automaticamente la selezione dell'utente in base al valore del parametro clr .
Esempio
Vedere l'esempio per CColorDialog::OnColorOK.
Vedi anche
MDI di esempio MFC
MFC Sample DRAWCLI
Classe CCommonDialog
Grafico della gerarchia