Hlavní
Hlavní strana
Seznam článků
Nejčtenější články
Progres e-mailem
Visual C++ FAQ

Seriály
COM
ISAPI

Nenechte si ujít
Neobdélníková okna
Tisk bez Preview
MFC a DLL
Logo v MDI ploše
Kouzla s kombo-boxem
Výjimky v C++

banner1.gif (2545 bytes)

Jak obarvit dialog? Jan Odvárko
20.10.1999
[Hlavní stránka]  |  [Rubrika]  |  [Download]

Změnu barvy pozadí v dialogu lze implementovat díky zprávě WM_CTLCOLOR Návratovou hodnotou metody, která tuto zprávu obsluhuje je pak identifikátor (handle) štětce, který se pro vybarvení pozadí má použít. Vygenerujme si tedy třídu, která bude představovat dialog a vytvořme v ní členskou proměnnou, jež bude reprezentovat štětec. Následující ukázka zdrojového kódu znázorňuje deklaraci této třídy.

class CColorDialogDlg : public CDialog
{
// ...
  //}}AFX_VIRTUAL

protected:
  CBrush m_brBkgnd;

// ...
};

V konstruktoru vytvoříme štetec, kterým později vybarvíme pozadí dialogu. Je samozřejmě možné vytvořit např. bitmapový štětec a na pozadí jednoduše zobrazovat bitmapu(y). Následující ukázka konstruktoru předvádí vytvoření červeného štětce.

CColorDialogDlg::CColorDialogDlg(CWnd* pParent /*=NULL*/)
  : CDialog(CColorDialogDlg::IDD, pParent)
{
  //...

  m_brBkgnd.CreateSolidBrush(RGB(25500));
}

Nyní nezbývá než pomocí ClassWizardu vygenerovat metodu, která bude obsluhovat zprávu WM_CTLCOLOR a vracet identifikátor vytvořeného štětce. Podívejme se tedy na novou implementaci této metody.

HBRUSH CColorDialogDlg::OnCtlColor(CDC* pDC, CWnd* pWnd,
	UINT nCtlColor) 
{
  return m_brBkgnd;
}

Na následujícím obrázku je vidět jak bude obarvený dialog vypadat.

jo_191099_colordialog_obr.gif (2296 bytes)

Pokud potřebujeme změnit barvu pozadí (nebo textu) pro všechny dialogy v naší aplikaci lze výhodně použít metodu SetDialogBkColor ze třídy CWinApp. Volání této metody se typicky provádí v metodě InitInstance naší aplikace. Podívejme se ještě na hlavičku této metody.

void SetDialogBkColor( COLORREF clrCtlBk =
RGB(192, 192, 192), COLORREF clrCtlText = RGB(0, 0, 0) );


clrCtlBk          Barva pozadí všech dialogů v aplikaci.
clrCtlText       Barva všech textů.

 


Podobné články: Kouzla s kombo-boxem díl 2.,

Kdo Otázka nebo připomínka

Prohlížení příspěvků nebo nový příspěvek

O firmě... Kontakt Ostatní

b