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
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
SiempreWS_VISIBLE
NormalmenteWS_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ónLoadBitmap
de Win32.CBitmap
, que contiene un tipo de objeto GDI, a menudo se usa en cooperación conCStatic
, que es una claseCWnd
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 objetoCBitmap
oCImage
. 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)