Класс 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 объект, чтобы уничтожить его при завершении работы с ним.

Иерархия наследования

CObject

CCmdTarget

CWnd

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 Класса