Freigeben über


CStatic-Klasse

Stellt die Funktionalität eines statischen Windows-Steuerelements bereit.

Syntax

class CStatic : public CWnd

Member

Öffentliche Konstruktoren

Name Beschreibung
CStatic::CStatic Erstellt ein CStatic-Objekt.

Öffentliche Methoden

Name Beschreibung
CStatic::Create Erstellt das statische Windows-Steuerelement und fügt es an das CStatic Objekt an.
CStatic::DrawItem Überschreiben, um ein vom Besitzer gezeichnetes statisches Steuerelement zu zeichnen.
CStatic::GetBitmap Ruft das Handle der zuvor festgelegten Bitmap mit SetBitmap.
CStatic::GetCursor Ruft das Handle des Cursorbilds ab, das zuvor mit SetCursor.
CStatic::GetEnhMetaFile Ruft das Handle der erweiterten Metadatei ab, die zuvor mit SetEnhMetaFile.
CStatic::GetIcon Ruft das Handle des Zuvor festgelegten Symbols mit SetIcon.
CStatic::SetBitmap Gibt eine Bitmap an, die im statischen Steuerelement angezeigt werden soll.
CStatic::SetCursor Gibt ein Cursorbild an, das im statischen Steuerelement angezeigt werden soll.
CStatic::SetEnhMetaFile Gibt eine erweiterte Metadatei an, die im statischen Steuerelement angezeigt werden soll.
CStatic::SetIcon Gibt ein Symbol an, das im statischen Steuerelement angezeigt werden soll.

Hinweise

Ein statisches Steuerelement zeigt eine Textzeichenfolge, ein Feld, ein Rechteck, ein Symbol, einen Cursor, eine Bitmap oder eine erweiterte Metadatei an. Sie kann zum Bezeichnen, Feld oder Trennen anderer Steuerelemente verwendet werden. Ein statisches Steuerelement akzeptiert normalerweise keine Eingabe und stellt keine Ausgabe bereit. Es kann jedoch das übergeordnete Element von Mausklicks benachrichtigen, wenn es mit SS_NOTIFY Stil erstellt wird.

Erstellen Sie ein statisches Steuerelement in zwei Schritten. Rufen Sie zuerst den Konstruktor auf, um das CStatic Objekt zu erstellen, und rufen Sie dann die Create Memberfunktion auf, um das statische Steuerelement zu erstellen und es an das CStatic Objekt anzufügen.

Wenn Sie ein CStatic Objekt in einem Dialogfeld (über eine Dialogressource) erstellen, wird das CStatic Objekt automatisch zerstört, wenn der Benutzer das Dialogfeld schließt.

Wenn Sie ein CStatic Objekt in einem Fenster erstellen, müssen Sie es möglicherweise auch zerstören. Ein CStatic im Stapel innerhalb eines Fensters erstelltes Objekt wird automatisch zerstört. Wenn Sie das CStatic Objekt auf dem Heap mithilfe der new Funktion erstellen, müssen Sie das Objekt aufrufen delete , um es zu zerstören, wenn Sie damit fertig sind.

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CStatic

Anforderungen

Header: afxwin.h

CStatic::Create

Erstellt das statische Windows-Steuerelement und fügt es an das CStatic Objekt an.

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

Parameter

lpszText
Gibt den Text an, der im Steuerelement platziert werden soll. Wenn NULL, wird kein Text angezeigt.

dwStyle
Gibt die Fensterformatvorlage des statischen Steuerelements an. Wenden Sie eine beliebige Kombination statischer Steuerelementformatvorlagen auf das Steuerelement an.

rect
Gibt die Position und Größe des statischen Steuerelements an. Es kann sich um eine RECT Struktur oder ein CRect Objekt handeln.

pParentWnd
Gibt das übergeordnete Fenster an, in der CStatic Regel ein CDialog Objekt. Es darf nicht sein NULL.

nID
Gibt die Steuerelement-ID des statischen Steuerelements an.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Erstellen Sie ein CStatic Objekt in zwei Schritten. Rufen Sie zuerst den Konstruktor CStaticauf, und rufen Sie dann das Createstatische Windows-Steuerelement auf, und fügt es an das CStatic Objekt an.

Wenden Sie die folgenden Fensterformatvorlagen auf ein statisches Steuerelement an:

  • WS_CHILD Immer

  • WS_VISIBLE Gewöhnlich

  • WS_DISABLED Selten

Wenn Sie eine Bitmap, einen Cursor, ein Symbol oder eine Metadatei im statischen Steuerelement anzeigen möchten, müssen Sie eine der folgenden statischen Formatvorlagen anwenden:

  • SS_BITMAP Verwenden Sie diese Formatvorlage für Bitmaps.

  • SS_ICON Verwenden Sie diese Formatvorlage für Cursor und Symbole.

  • SS_ENHMETAFILE Verwenden Sie diese Formatvorlage für erweiterte Metadateien.

Bei Cursorn, Bitmaps oder Symbolen können Sie auch die folgende Formatvorlage verwenden:

  • SS_CENTERIMAGE Wird verwendet, um das Bild im statischen Steuerelement zu zentrieren.

Beispiel

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

Erstellt ein CStatic-Objekt.

CStatic();

Beispiel

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

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

CStatic::DrawItem

Vom Framework aufgerufen, um ein vom Besitzer gezeichnetes statisches Steuerelement zu zeichnen.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parameter

lpDrawItemStruct
Ein Zeiger auf eine DRAWITEMSTRUCT Struktur. Die Struktur enthält Informationen über das zu zeichnende Element und den erforderlichen Zeichnungstyp.

Hinweise

Überschreiben Sie diese Funktion, um die Zeichnung für ein besitzergezeichnetes CStatic Objekt zu implementieren (das Steuerelement weist die Formatvorlage SS_OWNERDRAWauf).

CStatic::GetBitmap

Ruft das Handle der Bitmap, zuvor festgelegt mit SetBitmap, das zugeordnet CStaticist .

HBITMAP GetBitmap() const;

Rückgabewert

Ein Handle für die aktuelle Bitmap oder NULL wenn keine Bitmap festgelegt wurde.

Beispiel

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

Ruft das Handle des Cursors ab, der zuvor festgelegt SetCursorist, das zugeordnet CStaticist.

HCURSOR GetCursor();

Rückgabewert

Ein Handle für den aktuellen Cursor oder NULL wenn kein Cursor festgelegt wurde.

Beispiel

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

Ruft das Handle der erweiterten Metadatei, zuvor festgelegt mit SetEnhMetafile, das zugeordnet CStaticist .

HENHMETAFILE GetEnhMetaFile() const;

Rückgabewert

Ein Handle für die aktuelle erweiterte Metadatei oder NULL wenn keine erweiterte Metadatei festgelegt wurde.

Beispiel

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

Ruft das Handle des Symbols, zuvor festgelegt mit SetIcon, das zugeordnet CStaticist .

HICON GetIcon() const;

Rückgabewert

Ein Handle zum aktuellen Symbol oder NULL wenn kein Symbol festgelegt wurde.

Beispiel

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

Ordnet eine neue Bitmap dem statischen Steuerelement zu.

HBITMAP SetBitmap(HBITMAP hBitmap);

Parameter

hBitmap
Handle der Bitmap, die im statischen Steuerelement gezeichnet werden soll.

Rückgabewert

Das Handle der Bitmap, die zuvor dem statischen Steuerelement zugeordnet war, oder NULL wenn dem statischen Steuerelement keine Bitmap zugeordnet war.

Hinweise

Die Bitmap wird automatisch im statischen Steuerelement gezeichnet. Standardmäßig wird es in der oberen linken Ecke gezeichnet, und das statische Steuerelement wird in der Größe der Bitmap geändert.

Sie können verschiedene Fenster- und statische Steuerelementstile verwenden, einschließlich der folgenden:

  • SS_BITMAP Verwenden Sie diese Formatvorlage immer für Bitmaps.

  • SS_CENTERIMAGE Wird verwendet, um das Bild im statischen Steuerelement zu zentrieren. Wenn das Bild größer als das statische Steuerelement ist, wird es abgeschnitten. Wenn es kleiner als das statische Steuerelement ist, wird der leere Bereich um das Bild durch die Farbe des Pixels in der oberen linken Ecke der Bitmap gefüllt.

  • MFC stellt die Klasse CBitmapbereit, die Sie verwenden können, wenn Sie mehr mit einem Bitmapbild tun müssen, als nur die Win32-Funktion LoadBitmapaufzurufen. CBitmap, das eine Art von GDI-Objekt enthält, wird häufig in Zusammenarbeit mit CStaticverwendet , bei der es sich um eine CWnd Klasse handelt, die zum Anzeigen eines Grafikobjekts als statisches Steuerelement verwendet wird.

CImage ist eine ATL/MFC-Klasse, mit der Sie einfacher mit geräteunabhängigen Bitmaps (DIB) arbeiten können. Weitere Informationen finden Sie unter CImage "Klasse".

  • Die typische Verwendung besteht darin, einem GDI-Objekt zu geben CStatic::SetBitmap , das vom HBITMAP-Operator eines CBitmap objekts CImage zurückgegeben wird. Der zu tunde Code ähnelt der folgenden Zeile.
MyStaticControl.SetBitmap(HBITMAP(MyBitmap));

Im folgenden Beispiel werden zwei CStatic Objekte im Heap erstellt. Anschließend wird eine mit einer Systembitmap und CBitmap::LoadOEMBitmap die andere aus einer Datei geladen, CImage::Loaddie verwendet wird.

Beispiel

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

Ordnet ein neues Cursorbild dem statischen Steuerelement zu.

HCURSOR SetCursor(HCURSOR hCursor);

Parameter

hCursor
Handle des Cursors, der im statischen Steuerelement gezeichnet werden soll.

Rückgabewert

Der Ziehpunkt des Cursors, der zuvor dem statischen Steuerelement zugeordnet war, oder NULL wenn dem statischen Steuerelement kein Cursor zugeordnet war.

Hinweise

Der Cursor wird automatisch im statischen Steuerelement gezeichnet. Standardmäßig wird es in der oberen linken Ecke gezeichnet, und das statische Steuerelement wird in der Größe des Cursors geändert.

Sie können verschiedene Fenster- und statische Steuerelementstile verwenden, einschließlich der folgenden:

  • SS_ICON Verwenden Sie diese Formatvorlage immer für Cursor und Symbole.

  • SS_CENTERIMAGE Wird verwendet, um im statischen Steuerelement zu zentrieren. Wenn das Bild größer als das statische Steuerelement ist, wird es abgeschnitten. Wenn es kleiner als das statische Steuerelement ist, wird der leere Bereich um das Bild mit der Hintergrundfarbe des statischen Steuerelements gefüllt.

Beispiel

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

Ordnet ein neues erweitertes Metadateibild dem statischen Steuerelement zu.

HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile);

Parameter

hMetaFile
Handle der erweiterten Metadatei, die im statischen Steuerelement gezeichnet werden soll.

Rückgabewert

Das Handle der erweiterten Metadatei, die zuvor dem statischen Steuerelement zugeordnet war, oder NULL wenn dem statischen Steuerelement keine erweiterte Metadatei zugeordnet war.

Hinweise

Die erweiterte Metadatei wird automatisch im statischen Steuerelement gezeichnet. Die erweiterte Metadatei wird skaliert, um die Größe des statischen Steuerelements anzupassen.

Sie können verschiedene Fenster- und statische Steuerelementstile verwenden, einschließlich der folgenden:

  • SS_ENHMETAFILE Verwenden Sie diese Formatvorlage immer für erweiterte Metadateien.

Beispiel

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

Ordnet dem statischen Steuerelement ein neues Symbolbild zu.

HICON SetIcon(HICON hIcon);

Parameter

hIcon
Handle des Symbols, das im statischen Steuerelement gezeichnet werden soll.

Rückgabewert

Der Ziehpunkt des Symbols, das zuvor dem statischen Steuerelement zugeordnet war, oder NULL wenn dem statischen Steuerelement kein Symbol zugeordnet war.

Hinweise

Das Symbol wird automatisch im statischen Steuerelement gezeichnet. Standardmäßig wird es in der oberen linken Ecke gezeichnet, und das statische Steuerelement wird in der Größe des Symbols geändert.

Sie können verschiedene Fenster- und statische Steuerelementstile verwenden, einschließlich der folgenden:

  • SS_ICON Verwenden Sie diese Formatvorlage immer für Cursor und Symbole.

  • SS_CENTERIMAGE Wird verwendet, um im statischen Steuerelement zu zentrieren. Wenn das Bild größer als das statische Steuerelement ist, wird es abgeschnitten. Wenn es kleiner als das statische Steuerelement ist, wird der leere Bereich um das Bild mit der Hintergrundfarbe des statischen Steuerelements gefüllt.

Beispiel

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));

Siehe auch

CWnd Klasse
Hierarchiediagramm
CWnd Klasse
CButton Klasse
CComboBox Klasse
CEdit Klasse
CListBox Klasse
CScrollBar Klasse
CDialog Klasse