Condividi tramite


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 CColorDialogfunzioni 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 CColorDialogdi , vedere Classi di dialoghi comuni

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

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