Partilhar via


Classe CColorDialog

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Permite incorporar uma caixa de diálogo de seleção de cores na sua aplicação.

Sintaxe

class CColorDialog : public CCommonDialog

Membros

Construtores Públicos

Nome Description
CColorDialog::CColorDialog Constrói um CColorDialog objeto.

Métodos Públicos

Nome Description
CColorDialog::D oModal Exibe uma caixa de diálogo a cores e permite ao utilizador fazer uma seleção.
CColorDialog::GetColor Devolve uma COLORREF estrutura contendo os valores da cor selecionada.
CColorDialog::GetSavedCustomColors Recupera cores personalizadas criadas pelo utilizador.
CColorDialog::SetCurrentColor Força a seleção de cor atual para a cor especificada.

Métodos Protegidos

Nome Description
CColorDialog::OnColorOK Substitua para validar a cor introduzida na caixa de diálogo.

Membros de Dados Públicos

Nome Description
CColorDialog::m_cc Uma estrutura usada para personalizar as definições da caixa de diálogo.

Observações

Um CColorDialog objeto é uma caixa de diálogo com uma lista de cores definidas para o sistema de visualização. O utilizador pode selecionar ou criar uma cor específica da lista, que é depois reportada à aplicação quando a caixa de diálogo termina.

Para construir um CColorDialog objeto, use o construtor fornecido ou derive uma nova classe e use o seu próprio construtor personalizado.

Depois de construída a caixa de diálogo, pode definir ou modificar quaisquer valores na estrutura m_cc para inicializar os valores dos controlos da caixa de diálogo. A estrutura m_cc é do tipo CHOOSECOLOR.

Depois de inicializar os controlos da caixa de diálogo, chame a DoModal função membro para mostrar a caixa de diálogo e permitir que o utilizador selecione uma cor. DoModal devolve a seleção do utilizador do botão OK (IDOK) ou Cancelar (IDCANCEL) da caixa de diálogo.

Se DoModal devolver IDOK, pode usar uma das CColorDialogfunções membros de S para recuperar a informação introduzida pelo utilizador.

Pode usar a função CommDlgExtendedError do Windows para determinar se ocorreu um erro durante a inicialização da caixa de diálogo e para aprender mais sobre o erro.

CColorDialog depende do ficheiro COMMDLG.DLL que vem com as versões 3.1 do Windows e posteriores.

Para personalizar a caixa de diálogo, derive uma classe a partir de CColorDialog, forneça um modelo de diálogo personalizado e adicione um mapa de mensagens para processar as mensagens de notificação a partir dos controlos estendidos. Quaisquer mensagens não processadas devem ser encaminhadas para a classe base.

Não é necessário personalizar a função de gancho.

Observação

Em algumas instalações, o CColorDialog objeto não será exibido com fundo cinzento se tiver usado a estrutura para tornar outros CDialog objetos cinzentos.

Para mais informações sobre a utilização CColorDialogde , veja Common Dialog Classes

Hierarquia de herança

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CColorDialog

Requerimentos

Cabeçalho: afxdlgs.h

CColorDialog::CColorDialog

Constrói um CColorDialog objeto.

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

Parâmetros

clrInit
A seleção de cores por defeito. Se não for especificado um valor, o padrão é RGB(0,0,0) (preto).

dwBandeiras
Um conjunto de flags que personalizam a função e a aparência da caixa de diálogo. Para mais informações, consulte a estrutura CHOOSECOLOR no SDK do Windows.

pParentWnd
Um apontador para a janela pai ou proprietária da caixa de diálogo.

Example

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

Chame esta função para mostrar a caixa de diálogo de cores comuns do Windows e permitir que o utilizador selecione uma cor.

virtual INT_PTR DoModal();

Valor de retorno

IDOK ou IDCANCEL. Se o IDCANCEL for retornado, chame a função Windows CommDlgExtendedError para determinar se ocorreu um erro.

IDOK e IDCANCEL são constantes que indicam se o utilizador selecionou o botão OK ou Cancelar.

Observações

Se quiseres inicializar as várias opções de caixas de diálogo coloridas definindo membros da estrutura m_cc , deves fazer isto antes de chamar DoModal , mas depois de o objeto da caixa de diálogo estar construído.

Depois de chamar DoModal, pode chamar outras funções membros para recuperar as definições ou informações introduzidas pelo utilizador na caixa de diálogo.

Example

Veja o exemplo do CColorDialog::CColorDialog.

CColorDialog::GetColor

Chame esta função depois de chamar DoModal para recuperar a informação sobre a cor selecionada pelo utilizador.

COLORREF GetColor() const;

Valor de retorno

Um valor COLORREF que contém a informação RGB para a cor selecionada na caixa de diálogo de cores.

Example

// 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 Os objetos permitem ao utilizador, além de escolher cores, definir até 16 cores personalizadas.

static COLORREF* PASCAL GetSavedCustomColors();

Valor de retorno

Um apontador para um array de 16 valores de cor RGB que armazena cores personalizadas criadas pelo utilizador.

Observações

A GetSavedCustomColors função membro dá acesso a estas cores. Estas cores podem ser recuperadas depois de o DoModal devolver IDOK.

Cada um dos 16 valores RGB no array devolvido é inicializado para RGB(255,255,255) (branco). As cores personalizadas escolhidas pelo utilizador são guardadas apenas entre as invocações da caixa de diálogo dentro da aplicação. Se quiser guardar estas cores entre invocações da aplicação, deve guardá-las de outra forma, como numa inicialização (. INI).

Example

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

Uma estrutura do tipo CHOOSECOLOR, cujos membros armazenam as características e valores da caixa de diálogo.

CHOOSECOLOR m_cc;

Observações

Depois de construir um CColorDialog objeto, pode usar m_cc para definir vários aspetos da caixa de diálogo antes de chamar a função membro DoModal .

Example

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

Substitua para validar a cor introduzida na caixa de diálogo.

virtual BOOL OnColorOK();

Valor de retorno

Diferente de zero se a caixa de diálogo não deve ser descartada; caso contrário, 0 para aceitar a cor introduzida.

Observações

Anule esta função apenas se quiser fornecer uma validação personalizada da cor que o utilizador seleciona na caixa de diálogo de cores.

O utilizador pode selecionar uma cor por um dos seguintes dois métodos:

  • Clicar numa cor na paleta de cores. Os valores RGB da cor selecionada são então refletidos nas caixas de edição RGB apropriadas.

  • Introdução de valores nas caixas de edição RGB

A sobreposição OnColorOK permite rejeitar uma cor que o utilizador insere numa caixa de diálogo de cor comum por qualquer motivo específico da aplicação.

Normalmente, não é necessário usar esta função porque o framework fornece validação padrão das cores e apresenta uma caixa de mensagem se uma cor inválida for introduzida.

Podes chamar o SetCurrentColor a partir de dentro OnColorOK para forçar uma seleção de cor. Depois de OnColorOK ter sido disparado (ou seja, o utilizador clicar em OK para aceitar a mudança de cor), pode chamar o GetColor para obter o valor RGB da nova cor.

Example

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

Chame esta função depois de chamar DoModal para forçar a seleção de cor atual ao valor de cor especificado em clr.

void SetCurrentColor(COLORREF clr);

Parâmetros

clr
Um valor de cor RGB.

Observações

Esta função é chamada a partir de um manipulador de mensagens ou OnColorOK. A caixa de diálogo atualiza automaticamente a seleção do utilizador com base no valor do parâmetro clr .

Example

Veja o exemplo para CColorDialog::OnColorOK.

Consulte também

Exemplo MFC de MDI
Exemplo MFC DRAWCLI
Classe CCommonDialog
Gráfico de Hierarquia