Sdílet prostřednictvím


CStatic Třída

Poskytuje funkce statického ovládacího prvku Windows.

Syntaxe

class CStatic : public CWnd

Členové

Veřejné konstruktory

Název Popis
CStatic::CStatic CStatic Vytvoří objekt.

Veřejné metody

Název Popis
CStatic::Create Vytvoří statický ovládací prvek Windows a připojí ho k objektu CStatic .
CStatic::DrawItem Přepsáním nakreslete statický ovládací prvek nakreslený vlastníkem.
CStatic::GetBitmap Načte úchyt rastrového obrázku, který byl dříve nastaven pomocí SetBitmap.
CStatic::GetCursor Načte úchyt obrázku kurzoru, který byl dříve nastaven pomocí SetCursor.
CStatic::GetEnhMetaFile Načte popisovač rozšířeného metasouboru dříve nastavený pomocí SetEnhMetaFile.
CStatic::GetIcon Načte popisovač ikony, která byla dříve nastavena pomocí SetIcon.
CStatic::SetBitmap Určuje rastrový obrázek, který se má zobrazit ve statickém ovládacím prvku.
CStatic::SetCursor Určuje obrázek kurzoru, který se má zobrazit ve statickém ovládacím prvku.
CStatic::SetEnhMetaFile Určuje rozšířený metasoubor, který se má zobrazit ve statickém ovládacím prvku.
CStatic::SetIcon Určuje ikonu, která se má zobrazit ve statickém ovládacím prvku.

Poznámky

Statický ovládací prvek zobrazí textový řetězec, pole, obdélník, ikonu, kurzor, rastrový obrázek nebo rozšířený metasoubor. Dá se použít k označení, rámečku nebo oddělení jiných ovládacích prvků. Statický ovládací prvek obvykle nepřijímá žádný vstup a neposkytuje žádný výstup; ale může upozornit nadřazené kliknutí myší, pokud je vytvořen se stylem SS_NOTIFY .

Vytvořte statický ovládací prvek ve dvou krocích. Nejprve zavolejte konstruktor, který vytvoří CStatic objekt, a pak zavolá Create člen funkce pro vytvoření statického ovládacího prvku a připojí ho k objektu CStatic .

Pokud vytvoříte CStatic objekt v dialogovém okně (prostřednictvím prostředku dialogového okna), CStatic objekt se po zavření dialogového okna automaticky zničí.

Pokud v okně vytvoříte CStatic objekt, budete ho možná muset také zničit. Objekt CStatic vytvořený v zásobníku v okně se automaticky zničí. Pokud vytvoříte CStatic objekt na haldě pomocí new funkce, musíte volat delete objekt, aby ho zničil, jakmile s ním skončíte.

Hierarchie dědičnosti

CObject

CCmdTarget

CWnd

CStatic

Požadavky

Záhlaví: afxwin.h

CStatic::Create

Vytvoří statický ovládací prvek Windows a připojí ho k objektu CStatic .

virtual BOOL Create(
    LPCTSTR lpszText,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID = 0xffff);

Parametry

lpszText
Určuje text, který se má umístit do ovládacího prvku. Pokud NULLse nezobrazí žádný text.

dwStyle
Určuje styl okna statického ovládacího prvku. U ovládacího prvku použijte libovolnou kombinaci stylů statických ovládacích prvků.

rect
Určuje umístění a velikost statického ovládacího prvku. Může to být RECT struktura nebo CRect objekt.

pParentWnd
Určuje CStatic nadřazené okno, obvykle CDialog objekt. Nesmí to být NULL.

nID
Určuje ID ovládacího prvku statického ovládacího prvku.

Návratová hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Vytvořte CStatic objekt ve dvou krocích. Nejprve zavolejte konstruktor CStatica potom volání Create, který vytvoří statický ovládací prvek Windows a připojí ho k objektu CStatic .

U statického ovládacího prvku použijte následující styly oken:

  • WS_CHILD Vždy

  • WS_VISIBLE Obvykle

  • WS_DISABLED Zřídka

Pokud ve statickém ovládacím prvku zobrazíte rastrový obrázek, kurzor, ikonu nebo metasoubor, budete muset použít jeden z následujících statických stylů:

  • SS_BITMAP Tento styl použijte pro rastrové obrázky.

  • SS_ICON Tento styl použijte pro kurzory a ikony.

  • SS_ENHMETAFILE Tento styl použijte pro vylepšené metasoubory.

U kurzorů, rastrových obrázků nebo ikon můžete také použít následující styl:

  • SS_CENTERIMAGE Slouží ke středu obrázku ve statickém ovládacím prvku.

Příklad

// This code can be placed in OnInitDialog
CStatic myStatic;

// Create a child static control that centers its text horizontally.
myStatic.Create(_T("my static"), WS_CHILD | WS_VISIBLE | SS_CENTER,
                CRect(10, 10, 150, 50), pParentWnd);

CStatic::CStatic

CStatic Vytvoří objekt.

CStatic();

Příklad

// Create a static object on the stack.
CStatic myStatic;

// Create a static object on the heap.
CStatic *pmyStatic = new CStatic;

CStatic::DrawItem

Volal ho architektura k vykreslení statického ovládacího prvku nakreslený vlastníkem.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parametry

lpDrawItemStruct
Ukazatel na DRAWITEMSTRUCT strukturu. Struktura obsahuje informace o položce, kterou chcete nakreslit, a typ požadovaného výkresu.

Poznámky

Přepsat tuto funkci pro implementaci výkresu pro objekt nakreslený CStatic vlastníkem (ovládací prvek má styl SS_OWNERDRAW).

CStatic::GetBitmap

Získá úchyt rastrového obrázku, dříve nastaven s SetBitmap, který je přidružen CStatic.

HBITMAP GetBitmap() const;

Návratová hodnota

Popisovač aktuálního rastrového obrázku nebo NULL pokud nebyl nastaven žádný rastrový obrázek.

Příklad

// Code such as this could be placed in the OnInitDialog callback.
// It creates two bitmap static controls on the heap, using members
// _m_pCStatic_A and _m_pCStatic_B to identify them so that they can
// be destroyed when no longer needed.

  CBitmap CBmp;
  CImage CImg;

  // Create a child bitmap static control and load it from a CBitmap object.
  _m_pCStatic_A = new CStatic;
  _m_pCStatic_A->Create(_T("A bitmap static control (A)"), 
      WS_CHILD|WS_BORDER|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(16,16,64,64),
      pParentWnd);
  CBmp.LoadOEMBitmap(OBM_CLOSE);  // Loads one of the default Windows bitmaps
  _m_pCStatic_A->SetBitmap( HBITMAP(CBmp) );
  _m_pCStatic_A->ShowWindow( SW_SHOW );

  // Create a child bitmap static control and load it from a CImage object.
  _m_pCStatic_B = new CStatic;
  _m_pCStatic_B->Create(_T("A bitmap static control (B)"), 
      WS_CHILD|WS_BORDER|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(90,16,138,64),
      pParentWnd);
  CImg.Load( _T("test.png") );
  if( _m_pCStatic_B->GetBitmap( ) == NULL )
    _m_pCStatic_B->SetBitmap( HBITMAP(CImg) );

  /* Then, later: 
   delete( _m_pCStatic_A );
   delete( _m_pCStatic_B );
   */

CStatic::GetCursor

Získá úchyt kurzoru, dříve nastaven s SetCursor, který je přidružen CStatic.

HCURSOR GetCursor();

Návratová hodnota

Úchyt aktuálního kurzoru nebo NULL pokud nebyl nastaven žádný kurzor.

Příklad

CStatic myStatic;

// Create a child icon static control.
myStatic.Create(_T("my static"),
                WS_CHILD | WS_VISIBLE | SS_ICON | SS_CENTERIMAGE, CRect(10, 10, 150, 50),
                pParentWnd);

// If no image is defined for the static control, define the image
// to the system arrow and question mark cursor.
if (myStatic.GetCursor() == NULL)
   myStatic.SetCursor(::LoadCursor(NULL, IDC_HELP));

CStatic::GetEnhMetaFile

Získá popisovač rozšířeného metasouboru, který byl dříve nastaven s SetEnhMetafile, který je přidružen CStatic.

HENHMETAFILE GetEnhMetaFile() const;

Návratová hodnota

Popisovač aktuálního rozšířeného metasouboru nebo NULL pokud nebyl nastaven žádný rozšířený metasoubor.

Příklad

CStatic myStatic;

// Create a child enhanced metafile static control.
myStatic.Create(_T("my static"),
                WS_CHILD | WS_VISIBLE | SS_ENHMETAFILE | SS_CENTERIMAGE,
                CRect(10, 10, 150, 50), pParentWnd);

// If no image is defined for the static control, define the image
// to be "myemf.emf."
if (myStatic.GetEnhMetaFile() == NULL)
   myStatic.SetEnhMetaFile(::GetEnhMetaFile(_T("myemf.emf")));

CStatic::GetIcon

Získá úchyt ikony, dříve nastaven s SetIcon, který je přidružen CStatic.

HICON GetIcon() const;

Návratová hodnota

Popisovač aktuální ikony nebo NULL pokud nebyla nastavena žádná ikona.

Příklad

CStatic myStatic;

// Create a child icon static control.
myStatic.Create(_T("my static"),
                WS_CHILD | WS_VISIBLE | SS_ICON | SS_CENTERIMAGE, CRect(10, 10, 150, 50),
                pParentWnd);

// If no icon is defined for the static control, define the icon
// to the system error icon.
if (myStatic.GetIcon() == NULL)
   myStatic.SetIcon(::LoadIcon(NULL, IDI_ERROR));

CStatic::SetBitmap

Přidruží nový rastrový obrázek ke statickému ovládacímu prvku.

HBITMAP SetBitmap(HBITMAP hBitmap);

Parametry

hBitmap
Úchyt rastrového obrázku, který se má nakreslit ve statickém ovládacím prvku.

Návratová hodnota

Popisovač rastrového obrázku, který byl dříve přidružen ke statickému ovládacímu prvku, nebo NULL pokud nebyl k statickému ovládacímu prvku přidružen žádný rastrový obrázek.

Poznámky

Rastrový obrázek se automaticky nakreslí ve statickém ovládacím prvku. Ve výchozím nastavení se nakreslí v levém horním rohu a statický ovládací prvek se změní na velikost rastrového obrázku.

Můžete použít různé styly oken a statických ovládacích prvků, včetně těchto:

  • SS_BITMAP Tento styl používejte vždy pro rastrové obrázky.

  • SS_CENTERIMAGE Slouží ke středu obrázku ve statickém ovládacím prvku. Pokud je obrázek větší než statický ovládací prvek, vystřihne se. Pokud je menší než statický ovládací prvek, prázdné místo kolem obrázku se vyplní barvou pixelu v levém horním rohu rastrového obrázku.

  • MFC poskytuje třídu CBitmap, kterou můžete použít, když potřebujete udělat více s rastrovým obrázkem, než jen volat funkci LoadBitmapWin32 . CBitmap, který obsahuje jeden druh objektu GDI, se často používá ve spolupráci s CStatic, což je CWnd třída, která se používá k zobrazení grafického objektu jako statického ovládacího prvku.

CImage je třída ATL/MFC, která umožňuje snadněji pracovat s rastrovými obrázky nezávislými na zařízení (DIB). Další informace naleznete v tématu CImage Třída.

  • Typické použití je poskytnout CStatic::SetBitmap GDI objekt, který je vrácen HBITMAP operátorem CBitmap nebo CImage objektu. Kód, který to provede, se podobá následujícímu řádku.
MyStaticControl.SetBitmap(HBITMAP(MyBitmap));

Následující příklad vytvoří dva CStatic objekty v haldě. Pak načte jeden s systémovým rastrovým obrázkem pomocí CBitmap::LoadOEMBitmap a druhý ze souboru pomocí CImage::Load.

Příklad

// Code such as this could be placed in the OnInitDialog callback.
// It creates two bitmap static controls on the heap, using members
// _m_pCStatic_A and _m_pCStatic_B to identify them so that they can
// be destroyed when no longer needed.

  CBitmap CBmp;
  CImage CImg;

  // Create a child bitmap static control and load it from a CBitmap object.
  _m_pCStatic_A = new CStatic;
  _m_pCStatic_A->Create(_T("A bitmap static control (A)"), 
      WS_CHILD|WS_BORDER|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(16,16,64,64),
      pParentWnd);
  CBmp.LoadOEMBitmap(OBM_CLOSE);  // Loads one of the default Windows bitmaps
  _m_pCStatic_A->SetBitmap( HBITMAP(CBmp) );
  _m_pCStatic_A->ShowWindow( SW_SHOW );

  // Create a child bitmap static control and load it from a CImage object.
  _m_pCStatic_B = new CStatic;
  _m_pCStatic_B->Create(_T("A bitmap static control (B)"), 
      WS_CHILD|WS_BORDER|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(90,16,138,64),
      pParentWnd);
  CImg.Load( _T("test.png") );
  if( _m_pCStatic_B->GetBitmap( ) == NULL )
    _m_pCStatic_B->SetBitmap( HBITMAP(CImg) );

  /* Then, later: 
   delete( _m_pCStatic_A );
   delete( _m_pCStatic_B );
   */

CStatic::SetCursor

Přidruží nový obrázek kurzoru ke statickému ovládacímu prvku.

HCURSOR SetCursor(HCURSOR hCursor);

Parametry

hCursor
Úchyt kurzoru, který se má nakreslit ve statickém ovládacím prvku.

Návratová hodnota

Úchyt kurzoru, který byl dříve přidružený ke statickému ovládacímu prvku, nebo NULL pokud nebyl žádný kurzor přidružen ke statickému ovládacímu prvku.

Poznámky

Kurzor se automaticky nakreslí ve statickém ovládacím prvku. Ve výchozím nastavení se nakreslí v levém horním rohu a statický ovládací prvek se změní na velikost kurzoru.

Můžete použít různé styly oken a statických ovládacích prvků, včetně následujících:

  • SS_ICON Tento styl používejte vždy pro kurzory a ikony.

  • SS_CENTERIMAGE Slouží ke středu statického ovládacího prvku. Pokud je obrázek větší než statický ovládací prvek, vystřihne se. Pokud je menší než statický ovládací prvek, prázdné místo kolem obrázku se vyplní barvou pozadí statického ovládacího prvku.

Příklad

CStatic myStatic;

// Create a child icon static control.
myStatic.Create(_T("my static"),
                WS_CHILD | WS_VISIBLE | SS_ICON | SS_CENTERIMAGE, CRect(10, 10, 150, 50),
                pParentWnd);

// If no image is defined for the static control, define the image
// to the system arrow and question mark cursor.
if (myStatic.GetCursor() == NULL)
   myStatic.SetCursor(::LoadCursor(NULL, IDC_HELP));

CStatic::SetEnhMetaFile

Přidruží nový obrázek rozšířeného metasouboru ke statickému ovládacímu prvku.

HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile);

Parametry

hMetaFile
Úchyt rozšířeného metasouboru, který se má nakreslit ve statickém ovládacím prvku.

Návratová hodnota

Popisovač rozšířeného metasouboru, který byl dříve přidružen ke statickému ovládacímu prvku, nebo NULL pokud nebyl k statickému ovládacímu prvku přidružen žádný rozšířený metasoubor.

Poznámky

Vylepšený metasoubor se automaticky nakreslí ve statickém ovládacím prvku. Vylepšený metasoubor se škáluje tak, aby odpovídal velikosti statického ovládacího prvku.

Můžete použít různé styly oken a statických ovládacích prvků, včetně následujících:

  • SS_ENHMETAFILE Tento styl používejte vždy pro vylepšené metasoubory.

Příklad

CStatic myStatic;

// Create a child enhanced metafile static control.
myStatic.Create(_T("my static"),
                WS_CHILD | WS_VISIBLE | SS_ENHMETAFILE | SS_CENTERIMAGE,
                CRect(10, 10, 150, 50), pParentWnd);

// If no image is defined for the static control, define the image
// to be "myemf.emf."
if (myStatic.GetEnhMetaFile() == NULL)
   myStatic.SetEnhMetaFile(::GetEnhMetaFile(_T("myemf.emf")));

CStatic::SetIcon

Přidruží nový obrázek ikony ke statickému ovládacímu prvku.

HICON SetIcon(HICON hIcon);

Parametry

hIcon
Úchyt ikony, která se má nakreslit ve statickém ovládacím prvku

Návratová hodnota

Popisovač ikony, která byla dříve přidružena ke statickému ovládacímu prvku, nebo NULL pokud nebyla k statickému ovládacímu prvku přidružena žádná ikona.

Poznámky

Ikona se automaticky nakreslí ve statickém ovládacím prvku. Ve výchozím nastavení se nakreslí v levém horním rohu a statický ovládací prvek se změní na velikost ikony.

Můžete použít různé styly oken a statických ovládacích prvků, včetně následujících:

  • SS_ICON Tento styl používejte vždy pro kurzory a ikony.

  • SS_CENTERIMAGE Slouží ke středu statického ovládacího prvku. Pokud je obrázek větší než statický ovládací prvek, vystřihne se. Pokud je menší než statický ovládací prvek, prázdné místo kolem obrázku se vyplní barvou pozadí statického ovládacího prvku.

Příklad

CStatic myStatic;

// Create a child icon static control.
myStatic.Create(_T("my static"),
                WS_CHILD | WS_VISIBLE | SS_ICON | SS_CENTERIMAGE, CRect(10, 10, 150, 50),
                pParentWnd);

// If no icon is defined for the static control, define the icon
// to the system error icon.
if (myStatic.GetIcon() == NULL)
   myStatic.SetIcon(::LoadIcon(NULL, IDI_ERROR));

Viz také

CWnd Třída
Graf hierarchie
CWnd Třída
CButton Třída
CComboBox Třída
CEdit Třída
CListBox Třída
CScrollBar Třída
CDialog Třída