Compartir a través de


Clase CStatic

Proporciona la funcionalidad de un control estático de Windows.

Sintaxis

class CStatic : public CWnd

Miembros

Constructores públicos

Nombre Descripción
CStatic::CStatic Construye un objeto CStatic.

Métodos públicos

Nombre Descripción
CStatic::Create Crea el control estático de Windows y lo asocia al objeto CStatic.
CStatic::DrawItem Invalida para dibujar un control estático dibujado por el propietario.
CStatic::GetBitmap Recupera el identificador del mapa de bits establecido previamente con SetBitmap.
CStatic::GetCursor Recupera el identificador de la imagen del cursor establecida previamente con SetCursor.
CStatic::GetEnhMetaFile Recupera el identificador del metarchivo mejorado establecido previamente con SetEnhMetaFile.
CStatic::GetIcon Recupera el identificador del icono establecido previamente con SetIcon.
CStatic::SetBitmap Especifica que se va a mostrar un mapa de bits en el control estático.
CStatic::SetCursor Especifica que se va a mostrar una imagen del cursor en el control estático.
CStatic::SetEnhMetaFile Especifica que se va a mostrar un metarchivo mejorado en el control estático.
CStatic::SetIcon Especifica que se va a mostrar un icono en el control estático.

Comentarios

Un control estático muestra una cadena de texto, un cuadro, un rectángulo, un icono, un cursor, un mapa de bits o un metarchivo mejorado. Se puede usar para etiquetar, enmarcar o separar otros controles. Normalmente, un control estático no toma ninguna entrada y no proporciona ninguna salida; sin embargo, puede notificar a su elemento primario de clics del mouse si se crea con el estilo SS_NOTIFY.

Cree un control estático en dos pasos. En primer lugar, llame al constructor para que construya el objeto CStatic y, después, llame a la función miembro Create para que cree el control estático y lo asocie al objeto CStatic.

Si crea un objeto CStatic dentro de un cuadro de diálogo (mediante un recurso de diálogo), el objeto CStatic se destruye automáticamente cuando el usuario cierra el cuadro de diálogo.

Si crea un objeto CStatic dentro de una ventana, es posible que también tenga que destruirlo. Un objeto CStatic creado en la pila dentro de una ventana se destruye automáticamente. Si crea el objeto CStatic en el montón mediante la función new, debe llamar a delete en el objeto para destruirlo cuando haya terminado de usarlo.

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CStatic

Requisitos

Encabezado: afxwin.h

CStatic::Create

Crea el control estático de Windows y lo asocia al objeto CStatic.

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

Parámetros

lpszText
Especifica el texto que se va a colocar en el control. En caso de que el valor sea NULL, no se mostrará ningún texto.

dwStyle
Especifica el estilo de ventana del control estático. Aplique cualquier combinación de estilos de control estático al control.

rect
Especifica la posición y el tamaño del control estático. Puede ser una estructura RECT o un objeto CRect.

pParentWnd
Especifica la ventana primaria de CStatic, normalmente un objeto CDialog. Este valor no debe ser NULL.

nID
Especifica el identificador de control del control estático.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Construya un objeto CStatic en dos pasos. En primer lugar, llame al constructor CStatic y, a continuación, llame a Create, que crea el control estático de Windows y lo asocia al objeto CStatic.

Aplique los siguientes estilos de ventana a un control estático:

  • WS_CHILD Siempre

  • WS_VISIBLE Normalmente

  • WS_DISABLED Raramente

Si va a mostrar un mapa de bits, cursor, icono o metarchivo en el control estático, tendrá que aplicar uno de los siguientes estilos estáticos:

  • SS_BITMAP Use este estilo para mapas de bits.

  • SS_ICON Use este estilo para cursores e iconos.

  • SS_ENHMETAFILE Use este estilo para metarchivos mejorados.

En el caso de cursores, mapas de bits o iconos, también puede usar el siguiente estilo:

  • SS_CENTERIMAGE Use este estilo para centrar la imagen en el control estático.

Ejemplo

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

Construye un objeto CStatic.

CStatic();

Ejemplo

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

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

CStatic::DrawItem

Lo llama el marco de trabajo para dibujar un control estático dibujado por el propietario.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parámetros

lpDrawItemStruct
Un puntero a una estructura DRAWITEMSTRUCT. La estructura contiene información sobre el elemento que se va a dibujar y el tipo de dibujo necesario.

Comentarios

Invalide esta función para implementar el dibujo de un objeto CStatic dibujado por el propietario (el control tiene el estilo SS_OWNERDRAW).

CStatic::GetBitmap

Obtiene el identificador del mapa de bits, establecido previamente con SetBitmap, que está asociado a CStatic.

HBITMAP GetBitmap() const;

Valor devuelto

Identificador del mapa de bits actual o NULL si no se ha establecido ningún mapa de bits.

Ejemplo

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

Obtiene el identificador del cursor, establecido previamente con SetCursor, que está asociado a CStatic.

HCURSOR GetCursor();

Valor devuelto

Identificador del cursor actual o NULL si no se ha establecido ningún cursor.

Ejemplo

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

Obtiene el identificador del metarchivo mejorado, establecido previamente con SetEnhMetafile, que está asociado a CStatic.

HENHMETAFILE GetEnhMetaFile() const;

Valor devuelto

Identificador del metarchivo mejorado actual o NULL si no se ha establecido ningún metarchivo mejorado.

Ejemplo

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

Obtiene el identificador del icono, establecido previamente con SetIcon, que está asociado a CStatic.

HICON GetIcon() const;

Valor devuelto

Identificador del icono actual o NULL si no se ha establecido ningún icono.

Ejemplo

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

Asocia un nuevo mapa de bits con el control estático.

HBITMAP SetBitmap(HBITMAP hBitmap);

Parámetros

hBitmap
Identificador del mapa de bits que se va a dibujar en el control estático.

Valor devuelto

Identificador del mapa de bits que se asoció anteriormente al control estático, o NULL si no se ha asociado ningún mapa de bits al control estático.

Comentarios

El mapa de bits se dibujará automáticamente en el control estático. De forma predeterminada, se dibujará en la esquina superior izquierda y se cambiará el tamaño del control estático para que se ajuste al tamaño del mapa de bits.

Puede usar varios estilos de control estático y de ventana, incluidos los siguientes:

  • SS_BITMAP Use este estilo siempre para los mapas de bits.

  • SS_CENTERIMAGE Use este estilo para centrar la imagen en el control estático. Si la imagen es de un tamaño mayor que el control estático, se recortará. Si es menor que el control estático, el espacio vacío alrededor de la imagen se rellenará con el color del píxel en la esquina superior izquierda del mapa de bits.

  • MFC proporciona la clase CBitmap, que puede usar cuando necesite hacer algo más con una imagen de mapa de bits que simplemente llamar a la función LoadBitmap de Win32. CBitmap, que contiene un tipo de objeto GDI, a menudo se usa en cooperación con CStatic, que es una clase CWnd que se usa para mostrar un objeto gráfico como un control estático.

CImage es una clase de ATL o MFC que le permite trabajar más fácilmente con los mapas de bits independientes del dispositivo (DIB). Para obtener más información, consulte la CImage clase.

  • El uso típico es proporcionar a CStatic::SetBitmap un objeto GDI devuelto por el operador HBITMAP de un objeto CBitmap o CImage. El código para poder hacerlo se parece a la línea siguiente.
MyStaticControl.SetBitmap(HBITMAP(MyBitmap));

En el ejemplo siguiente se crean dos objetos CStatic en el montón. A continuación, carga uno con un mapa de bits del sistema mediante CBitmap::LoadOEMBitmap y el otro desde un archivo mediante CImage::Load.

Ejemplo

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

Asocia una nueva imagen de cursor al control estático.

HCURSOR SetCursor(HCURSOR hCursor);

Parámetros

hCursor
Identificador del cursor que se va a dibujar en el control estático.

Valor devuelto

Identificador del cursor que se asoció anteriormente al control estático, o NULL si no se ha asociado ningún cursor al control estático.

Comentarios

El cursor se dibujará automáticamente en el control estático. De forma predeterminada, se dibujará en la esquina superior izquierda y se cambiará el tamaño del control estático para que se ajuste al tamaño del cursor.

Puede usar varios estilos de control estático y de ventana, incluidos los siguientes:

  • SS_ICON Use este estilo siempre para cursores e iconos.

  • SS_CENTERIMAGE Use este estilo para centrar en el control estático. Si la imagen es de un tamaño mayor que el control estático, se recortará. Si es menor que el control estático, el espacio vacío alrededor de la imagen se rellenará con el color de fondo del control estático.

Ejemplo

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

Asocia una nueva imagen de metarchivo mejorado con el control estático.

HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile);

Parámetros

hMetaFile
Identificador del metarchivo mejorado que se va a dibujar en el control estático.

Valor devuelto

Identificador del metarchivo mejorado asociado anteriormente al control estático o NULL si no se ha asociado ningún metarchivo mejorado con el control estático.

Comentarios

El metarchivo mejorado se dibujará automáticamente en el control estático. El metarchivo mejorado se escala para ajustarse al tamaño del control estático.

Puede usar varios estilos de control estático y de ventana, incluidos los siguientes:

  • SS_ENHMETAFILE Use este estilo siempre para metarchivos mejorados.

Ejemplo

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

Asocia una nueva imagen de icono al control estático.

HICON SetIcon(HICON hIcon);

Parámetros

hIcon
Identificador del icono que se va a dibujar en el control estático.

Valor devuelto

Identificador del icono que se asoció anteriormente al control estático, o NULL si no se ha asociado ningún icono al control estático.

Comentarios

El icono se dibujará automáticamente en el control estático. De forma predeterminada, se dibujará en la esquina superior izquierda y se cambiará el tamaño del control estático para que se ajuste al tamaño del icono.

Puede usar varios estilos de control estático y de ventana, incluidos los siguientes:

  • SS_ICON Use este estilo siempre para cursores e iconos.

  • SS_CENTERIMAGE Use este estilo para centrar en el control estático. Si la imagen es de un tamaño mayor que el control estático, se recortará. Si es menor que el control estático, el espacio vacío alrededor de la imagen se rellenará con el color de fondo del control estático.

Ejemplo

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

Vea también

CWnd (clase)
Gráfico de jerarquías
CWnd (clase)
CButton (clase)
CComboBox (clase)
CEdit (clase)
CListBox (clase)
CScrollBar (clase)
CDialog (clase)