Udostępnij za pośrednictwem


CStatic Klasa

Udostępnia funkcje kontrolki statycznej systemu Windows.

Składnia

class CStatic : public CWnd

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CStatic::CStatic CStatic Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CStatic::Create Tworzy kontrolkę statyczną systemu Windows i dołącza ją do CStatic obiektu.
CStatic::DrawItem Zastąp, aby narysować kontrolkę statyczną rysowaną przez właściciela.
CStatic::GetBitmap Pobiera uchwyt mapy bitowej ustawionej wcześniej za pomocą polecenia SetBitmap.
CStatic::GetCursor Pobiera uchwyt obrazu kursora ustawionego wcześniej za pomocą polecenia SetCursor.
CStatic::GetEnhMetaFile Pobiera uchwyt rozszerzonego metapliku ustawionego wcześniej za pomocą polecenia SetEnhMetaFile.
CStatic::GetIcon Pobiera uchwyt ikony ustawionej wcześniej za pomocą polecenia SetIcon.
CStatic::SetBitmap Określa mapę bitową, która ma być wyświetlana w kontrolce statycznej.
CStatic::SetCursor Określa obraz kursora, który ma być wyświetlany w kontrolce statycznej.
CStatic::SetEnhMetaFile Określa rozszerzony metaplik, który ma być wyświetlany w kontrolce statycznej.
CStatic::SetIcon Określa ikonę, która ma być wyświetlana w kontrolce statycznej.

Uwagi

Kontrolka statyczna wyświetla ciąg tekstowy, pole, prostokąt, ikonę, kursor, mapę bitową lub rozszerzony metaplik. Może służyć do etykietowania, pola lub oddzielania innych kontrolek. Statyczna kontrolka zwykle nie przyjmuje żadnych danych wejściowych i nie zapewnia żadnych danych wyjściowych; może jednak powiadomić jego element nadrzędny kliknięć myszy, jeśli został utworzony za pomocą SS_NOTIFY stylu.

Utwórz statyczną kontrolkę w dwóch krokach. Najpierw wywołaj konstruktor, aby skonstruować CStatic obiekt, a następnie wywołaj Create funkcję składową, aby utworzyć kontrolkę statyczną CStatic i dołączyć ją do obiektu.

Jeśli utworzysz CStatic obiekt w oknie dialogowym (za pomocą zasobu okna dialogowego), CStatic obiekt zostanie automatycznie zniszczony, gdy użytkownik zamknie okno dialogowe.

Jeśli utworzysz CStatic obiekt w oknie, może być również konieczne jego zniszczenie. Obiekt CStatic utworzony na stosie w oknie jest automatycznie niszczony. Jeśli utworzysz CStatic obiekt na stercie przy użyciu funkcji, musisz wywołać delete obiekt, aby go zniszczyć po zakończeniu new pracy z nim.

Hierarchia dziedziczenia

CObject

CCmdTarget

CWnd

CStatic

Wymagania

Nagłówek: afxwin.h

CStatic::Create

Tworzy kontrolkę statyczną systemu Windows i dołącza ją do CStatic obiektu.

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

Parametry

lpszText
Określa tekst do umieszczenia w kontrolce. Jeśli NULLwartość , żaden tekst nie będzie widoczny.

dwStyle
Określa styl okna kontrolki statycznej. Zastosuj dowolną kombinację statycznych stylów kontrolek do kontrolki.

rect
Określa położenie i rozmiar kontrolki statycznej. Może to być RECT struktura lub CRect obiekt.

pParentWnd
Określa okno nadrzędne CStatic , zwykle CDialog obiekt. Nie może to być NULL.

nID
Określa identyfikator kontrolki statycznej.

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.

Uwagi

Skonstruuj CStatic obiekt w dwóch krokach. Najpierw wywołaj konstruktor CStatic, a następnie wywołaj Createmetodę , która tworzy kontrolkę statyczną systemu Windows i dołącza ją do CStatic obiektu.

Zastosuj następujące style okna do kontrolki statycznej:

  • WS_CHILD Zawsze

  • WS_VISIBLE Zwykle

  • WS_DISABLED Rzadko

Jeśli zamierzasz wyświetlić mapę bitową, kursor, ikonę lub metaplik w kontrolce statycznej, musisz zastosować jeden z następujących stylów statycznych:

  • SS_BITMAP Użyj tego stylu dla map bitowych.

  • SS_ICON Użyj tego stylu dla kursorów i ikon.

  • SS_ENHMETAFILE Użyj tego stylu dla rozszerzonych metaplików.

W przypadku kursorów, map bitowych lub ikon możesz również użyć następującego stylu:

  • SS_CENTERIMAGE Użyj polecenia , aby wyśrodkować obraz w kontrolce statycznej.

Przykład

// 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 Tworzy obiekt.

CStatic();

Przykład

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

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

CStatic::DrawItem

Wywoływana przez platformę w celu rysowania kontrolki statycznej rysowanej przez właściciela.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parametry

lpDrawItemStruct
Wskaźnik do DRAWITEMSTRUCT struktury. Struktura zawiera informacje o elemencie, który ma zostać narysowany, oraz wymagany typ rysunku.

Uwagi

Zastąp tę funkcję, aby zaimplementować rysunek dla obiektu rysowanego CStatic przez właściciela (kontrolka ma styl SS_OWNERDRAW).

CStatic::GetBitmap

Pobiera uchwyt mapy bitowej, wcześniej ustawiony z elementem SetBitmap, który jest skojarzony z elementem CStatic.

HBITMAP GetBitmap() const;

Wartość zwracana

Uchwyt bieżącej mapy bitowej lub NULL jeśli nie ustawiono mapy bitowej.

Przykład

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

Pobiera uchwyt kursora, który został wcześniej ustawiony z elementem SetCursor, który jest skojarzony z elementem CStatic.

HCURSOR GetCursor();

Wartość zwracana

Uchwyt do bieżącego kursora lub NULL jeśli nie ustawiono kursora.

Przykład

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

Pobiera uchwyt rozszerzonego metapliku, który został wcześniej ustawiony z elementem SetEnhMetafile, który jest skojarzony z elementem CStatic.

HENHMETAFILE GetEnhMetaFile() const;

Wartość zwracana

Uchwyt dla bieżącego rozszerzonego metapliku lub NULL jeśli nie ustawiono rozszerzonego metapliku.

Przykład

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

Pobiera uchwyt ikony, wcześniej ustawiony z elementem SetIcon, który jest skojarzony z elementem CStatic.

HICON GetIcon() const;

Wartość zwracana

Uchwyt do bieżącej ikony lub NULL jeśli nie ustawiono żadnej ikony.

Przykład

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

Kojarzy nową mapę bitową ze statyczną kontrolką.

HBITMAP SetBitmap(HBITMAP hBitmap);

Parametry

hBitmap
Uchwyt mapy bitowej do narysowania w kontrolce statycznej.

Wartość zwracana

Uchwyt mapy bitowej, który był wcześniej skojarzony z kontrolką statyczną lub NULL jeśli żadna mapa bitowa nie została skojarzona ze statyczną kontrolką.

Uwagi

Mapa bitowa zostanie automatycznie narysowana w kontrolce statycznej. Domyślnie zostanie on narysowany w lewym górnym rogu, a rozmiar kontrolki statycznej zostanie zmieniony na rozmiar mapy bitowej.

Można użyć różnych stylów okien i statycznych kontrolek, w tym następujących:

  • SS_BITMAP Użyj tego stylu zawsze w przypadku map bitowych.

  • SS_CENTERIMAGE Użyj polecenia , aby wyśrodkować obraz w kontrolce statycznej. Jeśli obraz jest większy niż kontrolka statyczna, zostanie obcięty. Jeśli kontrolka statyczna jest mniejsza niż statyczna, puste miejsce wokół obrazu będzie wypełnione kolorem piksela w lewym górnym rogu mapy bitowej.

  • MFC udostępnia klasę CBitmap, której można użyć, gdy trzeba zrobić więcej z obrazem mapy bitowej niż tylko wywołać funkcję LoadBitmapWin32 . CBitmap, który zawiera jeden rodzaj obiektu GDI, jest często używany we współpracy z CStatic, która jest klasą używaną CWnd do wyświetlania obiektu graficznego jako kontrolki statycznej.

CImage to klasa ATL/MFC, która umożliwia łatwiejsze pracę z niezależnymi mapami bitowymi (DIB, device independent bitmaps). Aby uzyskać więcej informacji, zobacz CImage Klasa.

  • Typowym użyciem jest nadanie CStatic::SetBitmap obiektu GDI zwracanego przez operatora CBitmap HBITMAP obiektu lub CImage . Kod, który ma to zrobić, przypomina następujący wiersz.
MyStaticControl.SetBitmap(HBITMAP(MyBitmap));

Poniższy przykład tworzy dwa CStatic obiekty na stercie. Następnie ładuje jedną z systemową mapą bitową przy użyciu i CBitmap::LoadOEMBitmap drugą z pliku przy użyciu polecenia CImage::Load.

Przykład

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

Kojarzy nowy obraz kursora ze statyczną kontrolką.

HCURSOR SetCursor(HCURSOR hCursor);

Parametry

hCursor
Uchwyt kursora do narysowania w kontrolce statycznej.

Wartość zwracana

Uchwyt kursora wcześniej skojarzony z kontrolką statyczną lub NULL jeśli nie został skojarzony z kontrolką statyczną.

Uwagi

Kursor zostanie automatycznie narysowany w kontrolce statycznej. Domyślnie zostanie on narysowany w lewym górnym rogu, a rozmiar kontrolki statycznej zostanie zmieniony na rozmiar kursora.

Można użyć różnych stylów okien i statycznych kontrolek, w tym następujących:

  • SS_ICON Użyj tego stylu zawsze dla kursorów i ikon.

  • SS_CENTERIMAGE Użyj polecenia , aby wyśrodkować w kontrolce statycznej. Jeśli obraz jest większy niż kontrolka statyczna, zostanie obcięty. Jeśli kontrolka statyczna jest mniejsza niż statyczna, puste miejsce wokół obrazu zostanie wypełnione kolorem tła kontrolki statycznej.

Przykład

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

Kojarzy nowy rozszerzony obraz metapliku z kontrolką statyczną.

HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile);

Parametry

hMetaFile
Uchwyt rozszerzonego metapliku, który ma być rysowany w kontrolce statycznej.

Wartość zwracana

Uchwyt rozszerzonego metapliku skojarzonego wcześniej z kontrolką statyczną lub NULL jeśli nie skojarzono żadnego rozszerzonego metapliku ze statyczną kontrolką.

Uwagi

Rozszerzony metaplik zostanie automatycznie narysowany w kontrolce statycznej. Rozszerzony metaplik jest skalowany w celu dopasowania do rozmiaru kontrolki statycznej.

Można użyć różnych stylów okien i statycznych kontrolek, w tym następujących:

  • SS_ENHMETAFILE Ten styl należy zawsze używać w przypadku rozszerzonych metaplików.

Przykład

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

Kojarzy nowy obraz ikony z kontrolką statyczną.

HICON SetIcon(HICON hIcon);

Parametry

hIcon
Uchwyt ikony do narysowania w kontrolce statycznej.

Wartość zwracana

Uchwyt ikony wcześniej skojarzony z kontrolką statyczną lub NULL jeśli żadna ikona nie została skojarzona z kontrolką statyczną.

Uwagi

Ikona zostanie automatycznie narysowana w kontrolce statycznej. Domyślnie zostanie ona narysowana w lewym górnym rogu, a rozmiar kontrolki statycznej zostanie zmieniony na rozmiar ikony.

Można użyć różnych stylów okien i statycznych kontrolek, w tym następujących:

  • SS_ICON Użyj tego stylu zawsze dla kursorów i ikon.

  • SS_CENTERIMAGE Użyj polecenia , aby wyśrodkować w kontrolce statycznej. Jeśli obraz jest większy niż kontrolka statyczna, zostanie obcięty. Jeśli kontrolka statyczna jest mniejsza niż statyczna, puste miejsce wokół obrazu zostanie wypełnione kolorem tła kontrolki statycznej.

Przykład

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

Zobacz też

CWnd Klasa
Wykres hierarchii
CWnd Klasa
CButton Klasa
CComboBox Klasa
CEdit Klasa
CListBox Klasa
CScrollBar Klasa
CDialog Klasa