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
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 NULL
wartość , ż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 Create
metodę , 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
ZawszeWS_VISIBLE
ZwykleWS_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ęLoadBitmap
Win32 .CBitmap
, który zawiera jeden rodzaj obiektu GDI, jest często używany we współpracy zCStatic
, 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 operatoraCBitmap
HBITMAP obiektu lubCImage
. 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