Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Класс
Предоставляет функции статического элемента управления 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, который можно использовать, если требуется сделать больше с растровым изображением, чем просто вызвать функциюLoadBitmapWin32.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 Класс