Класс CStatic
Предоставляет функции статического элемента управления Windows.
Синтаксис
class CStatic : public CWnd
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CStatic::CStatic |
Формирует объект CStatic . |
Открытые методы
Имя | Описание |
---|---|
CStatic::Create |
Создает статический элемент управления Windows и присоединяет его к объекту CStatic . |
CStatic::DrawItem |
Переопределите, чтобы нарисовать статический элемент управления, нарисованный владельцем. |
CStatic::GetBitmap |
Извлекает дескриптор ранее заданного SetBitmap ранее растрового изображения. |
CStatic::GetCursor |
Извлекает дескриптор ранее заданного SetCursor изображения курсора. |
CStatic::GetEnhMetaFile |
Извлекает дескриптор расширенного метафайла, заданного SetEnhMetaFile ранее. |
CStatic::GetIcon |
Извлекает дескриптор ранее заданного SetIcon значка. |
CStatic::SetBitmap |
Указывает растровое изображение, отображаемое в статическом элементе управления. |
CStatic::SetCursor |
Указывает изображение курсора, отображаемое в статическом элементе управления. |
CStatic::SetEnhMetaFile |
Указывает расширенный метафайл, отображаемый в статическом элементе управления. |
CStatic::SetIcon |
Указывает значок, отображаемый в статическом элементе управления. |
Замечания
Статический элемент управления отображает текстовую строку, поле, прямоугольник, значок, курсор, растровое изображение или расширенный метафайл. Его можно использовать для метки, поля или разделения других элементов управления. Статический элемент управления обычно не принимает входных данных и не предоставляет выходных данных; однако он может уведомить родительский элемент мыши о щелчках мыши, если он создан с помощью SS_NOTIFY
стиля.
Создайте статический элемент управления двумя шагами. Сначала вызовите конструктор для создания CStatic
объекта, а затем вызовите Create
функцию-член, чтобы создать статический элемент управления и присоединить его к объекту CStatic
.
При создании CStatic
объекта в диалоговом окне (с помощью ресурса диалогового окна) CStatic
объект автоматически уничтожается, когда пользователь закрывает диалоговое окно.
Если вы создаете CStatic
объект в окне, его также может потребоваться уничтожить. CStatic
Объект, созданный в стеке в окне, автоматически уничтожается. Если вы создаете CStatic
объект в куче с помощью new
функции, необходимо вызвать delete
объект, чтобы уничтожить его при завершении работы с ним.
Иерархия наследования
CStatic
Требования
Заголовок: afxwin.h
CStatic::Create
Создает статический элемент управления Windows и присоединяет его к объекту CStatic
.
virtual BOOL Create(
LPCTSTR lpszText,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID = 0xffff);
Параметры
lpszText
Указывает текст, который будет размещаться в элементе управления. Если NULL
текст не будет отображаться.
dwStyle
Задает стиль окна статического элемента управления. Примените любое сочетание стилей статических элементов управления к элементу управления.
rect
Указывает положение и размер статического элемента управления. Это может быть RECT
структура или CRect
объект.
pParentWnd
Указывает родительское CStatic
окно, обычно CDialog
объект. Это не должно быть NULL
.
nID
Указывает идентификатор элемента управления статического элемента управления.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
CStatic
Создайте объект на двух шагах. Сначала вызовите конструктор CStatic
, а затем вызов Create
, который создает статический элемент управления Windows и присоединяет его к объекту CStatic
.
Примените следующие стили окон к статическому элементу управления:
WS_CHILD
ВсегдаWS_VISIBLE
ОбычноWS_DISABLED
Редко
Если вы собираетесь отобразить растровое изображение, курсор, значок или метафайл в статическом элементе управления, вам потребуется применить один из следующих статических стилей:
SS_BITMAP
Используйте этот стиль для растровых изображений.SS_ICON
Используйте этот стиль для курсоров и значков.SS_ENHMETAFILE
Используйте этот стиль для расширенных метафайлов.
Для курсоров, растровых изображений или значков также может потребоваться использовать следующий стиль:
SS_CENTERIMAGE
Используется для центра изображения в статическом элементе управления.
Пример
// 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
.
CStatic();
Пример
// Create a static object on the stack.
CStatic myStatic;
// Create a static object on the heap.
CStatic *pmyStatic = new CStatic;
CStatic::DrawItem
Вызывается платформой для рисования статического элемента управления, нарисованного владельцем.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Параметры
lpDrawItemStruct
Указатель на структуру DRAWITEMSTRUCT
. Структура содержит сведения о рисуемом элементе и типе необходимого документа.
Замечания
Переопределите эту функцию, чтобы реализовать рисование для объекта, нарисованного CStatic
владельцем (элемент управления имеет стиль SS_OWNERDRAW
).
CStatic::GetBitmap
Получает дескриптор растрового изображения, заданного SetBitmap
ранее с , который связан с CStatic
.
HBITMAP GetBitmap() const;
Возвращаемое значение
Дескриптор текущего растрового изображения или NULL
если растровое изображение не задано.
Пример
// 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
Возвращает дескриптор курсора, заданный ранее с SetCursor
, связанный с CStatic
.
HCURSOR GetCursor();
Возвращаемое значение
Дескриптор текущего курсора или NULL
если курсор не задан.
Пример
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
Возвращает дескриптор расширенного метафайла, заданного SetEnhMetafile
ранее с , связанной с CStatic
.
HENHMETAFILE GetEnhMetaFile() const;
Возвращаемое значение
Дескриптор текущего расширенного метафайла или NULL
если расширенный метафайл не задан.
Пример
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
Получает дескриптор значка, заданный SetIcon
ранее с , связанный с CStatic
.
HICON GetIcon() const;
Возвращаемое значение
Дескриптор текущего значка или NULL
если значок не задан.
Пример
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
Связывает новое растровое изображение со статическим элементом управления.
HBITMAP SetBitmap(HBITMAP hBitmap);
Параметры
hBitmap
Дескриптор растрового изображения, нарисованного в статическом элементе управления.
Возвращаемое значение
Дескриптор растрового изображения, который ранее был связан со статическим элементом управления, или NULL
если с статическим элементом управления не было связано растровое изображение.
Замечания
Растровое изображение будет автоматически вырисовано в статическом элементе управления. По умолчанию он будет вырисовываться в левом верхнем углу, а статический элемент управления изменится на размер растрового изображения.
Вы можете использовать различные стили окон и статических элементов управления, включая следующие:
SS_BITMAP
Используйте этот стиль всегда для растровых изображений.SS_CENTERIMAGE
Используется для центра изображения в статическом элементе управления. Если изображение больше статического элемента управления, оно будет обрезано. Если он меньше статического элемента управления, пустое пространство вокруг изображения будет заполнено цветом пикселя в левом верхнем углу растрового изображения.MFC предоставляет класс
CBitmap
, который можно использовать, если требуется сделать больше с растровым изображением, чем просто вызвать функциюLoadBitmap
Win32.CBitmap
, который содержит один тип объекта GDI, часто используется в сотрудничестве сCStatic
классомCWnd
, который используется для отображения графического объекта в виде статического элемента управления.
CImage
— это класс ATL/MFC, который упрощает работу с независимыми растровыми изображениями устройства (DIB). Дополнительные сведения см. в разделе CImage
"Класс".
- Обычное использование — дать
CStatic::SetBitmap
объект GDI, возвращаемый оператором HBITMAP объектаCBitmap
илиCImage
объекта. Код для этого похож на следующую строку.
MyStaticControl.SetBitmap(HBITMAP(MyBitmap));
В следующем примере создаются два CStatic
объекта в куче. Затем он загружает одно с системным растровым изображением, используя CBitmap::LoadOEMBitmap
и другое из файла.CImage::Load
Пример
// 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
Связывает новый образ курсора со статическим элементом управления.
HCURSOR SetCursor(HCURSOR hCursor);
Параметры
hCursor
Дескриптор курсора, нарисованного в статическом элементе управления.
Возвращаемое значение
Дескриптор курсора, ранее связанный со статическим элементом управления, или NULL
если курсор не был связан со статическим элементом управления.
Замечания
Курсор будет автоматически нарисован в статическом элементе управления. По умолчанию он будет вырисовываться в левом верхнем углу, а статический элемент управления изменится на размер курсора.
Можно использовать различные стили окон и статических элементов управления, включая следующие:
SS_ICON
Используйте этот стиль всегда для курсоров и значков.SS_CENTERIMAGE
Используется для центра в статическом элементе управления. Если изображение больше статического элемента управления, оно будет обрезано. Если он меньше статического элемента управления, пустое пространство вокруг изображения будет заполнено цветом фона статического элемента управления.
Пример
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
Связывает новый расширенный образ метафайла со статическим элементом управления.
HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile);
Параметры
hMetaFile
Дескриптор расширенного метафайла, нарисованного в статическом элементе управления.
Возвращаемое значение
Дескриптор расширенного метафайла, ранее связанного со статическим элементом управления, или NULL
если расширенный метафайл не был связан со статическим элементом управления.
Замечания
Расширенный метафайл будет автоматически вырисовываться в статическом элементе управления. Расширенный метафайл масштабируется, чтобы соответствовать размеру статического элемента управления.
Можно использовать различные стили окон и статических элементов управления, включая следующие:
SS_ENHMETAFILE
Используйте этот стиль всегда для расширенных метафайлов.
Пример
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
Связывает новое изображение значка со статическим элементом управления.
HICON SetIcon(HICON hIcon);
Параметры
hIcon
Дескриптор значка, нарисованного в статическом элементе управления.
Возвращаемое значение
Дескриптор значка, ранее связанного со статическим элементом управления, или NULL
если значок не был связан со статическим элементом управления.
Замечания
Значок будет автоматически нарисован в статическом элементе управления. По умолчанию он будет вырисован в левом верхнем углу, а статический элемент управления изменится на размер значка.
Можно использовать различные стили окон и статических элементов управления, включая следующие:
SS_ICON
Используйте этот стиль всегда для курсоров и значков.SS_CENTERIMAGE
Используется для центра в статическом элементе управления. Если изображение больше статического элемента управления, оно будет обрезано. Если он меньше статического элемента управления, пустое пространство вокруг изображения будет заполнено цветом фона статического элемента управления.
Пример
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));
См. также
CWnd
Класс
Диаграмма иерархии
CWnd
Класс
CButton
Класс
CComboBox
Класс
CEdit
Класс
CListBox
Класс
CScrollBar
Класс
CDialog
Класс