Partilhar via


CStatic Classe

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Fornece a funcionalidade de um controlo estático do Windows.

Sintaxe

class CStatic : public CWnd

Membros

Construtores Públicos

Nome Description
CStatic::CStatic Constrói um CStatic objeto.

Métodos Públicos

Nome Description
CStatic::Create Cria o controlo estático do Windows e anexa-o ao CStatic objeto.
CStatic::DrawItem Override para desenhar um controlo estático desenhado pelo proprietário.
CStatic::GetBitmap Recupera o handle do bitmap anteriormente definido com SetBitmap.
CStatic::GetCursor Recupera a alavanca da imagem cursor anteriormente definida com SetCursor.
CStatic::GetEnhMetaFile Recupera o handle do metaficheiro aprimorado anteriormente definido com SetEnhMetaFile.
CStatic::GetIcon Recupera o alavanca do ícone anteriormente definido com SetIcon.
CStatic::SetBitmap Especifica um bitmap a ser exibido no controlo estático.
CStatic::SetCursor Especifica uma imagem cursor a ser exibida no controlo estático.
CStatic::SetEnhMetaFile Especifica um metaficheiro melhorado a ser exibido no controlo estático.
CStatic::SetIcon Especifica um ícone a ser exibido no controlo estático.

Observações

Um controlo estático apresenta uma cadeia de texto, caixa, retângulo, ícone, cursor, bitmap ou metaficheiro aprimorado. Pode ser usado para etiquetar, embalar ou separar outros controlos. Um controlo estático normalmente não recebe entrada nem fornece saída; no entanto, pode notificar o pai dos cliques do rato se for criado com SS_NOTIFY estilo.

Crie um controlo estático em dois passos. Primeiro, chama o construtor para construir o CStatic objeto, depois chama a Create função membro para criar o controlo estático e anexá-lo ao CStatic objeto.

Se criar um CStatic objeto dentro de uma caixa de diálogo (através de um recurso de diálogo), o CStatic objeto é automaticamente destruído quando o utilizador fecha a caixa de diálogo.

Se criares um CStatic objeto dentro de uma janela, podes também ter de o destruir. Um CStatic objeto criado na pilha dentro de uma janela é automaticamente destruído. Se criares o CStatic objeto no heap usando a new função, tens de invocar delete o objeto para o destruir quando terminares com ele.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CStatic

Requerimentos

Cabeçalho:afxwin.h

CStatic::Create

Cria o controlo estático do Windows e anexa-o ao CStatic objeto.

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

Parâmetros

lpszText
Especifica o texto a colocar no controlo. Se NULL, nenhum texto será visível.

dwStyle
Especifica o estilo da janela do controlo estático. Aplique qualquer combinação de estilos de controlo estático ao controlo.

rect
Especifica a posição e o tamanho do controlo estático. Pode ser uma RECT estrutura ou um CRect objeto.

pParentWnd
Especifica a CStatic janela principal, normalmente um CDialog objeto. Não pode ser NULL.

nID
Especifica o ID de controlo estático.

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, 0.

Observações

Constrói um CStatic objeto em dois passos. Primeiro, chama o construtor CStatic, e depois chama Create, que cria o controlo estático do Windows e o anexa ao CStatic objeto.

Aplique os seguintes estilos de janela a um controlo estático:

  • WS_CHILD Sempre

  • WS_VISIBLE Normalmente

  • WS_DISABLED Raramente

Se vais mostrar um bitmap, cursor, ícone ou metaficheiro no controlo estático, terás de aplicar um dos seguintes estilos estáticos:

  • SS_BITMAP Usa este estilo para bitmaps.

  • SS_ICON Use este estilo para cursores e ícones.

  • SS_ENHMETAFILE Use este estilo para metaficheiros melhorados.

Para cursores, bitmaps ou ícones, pode também querer usar o seguinte estilo:

  • SS_CENTERIMAGE Use para centrar a imagem no controlo estático.

Example

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

Constrói um CStatic objeto.

CStatic();

Example

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

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

CStatic::DrawItem

Chamado pelo framework para desenhar um controlo estático desenhado pelo proprietário.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parâmetros

lpDrawItemStruct
Um ponteiro para uma DRAWITEMSTRUCT estrutura. A estrutura contém informações sobre o item a desenhar e o tipo de desenho necessário.

Observações

Sobrescreva esta função para implementar o desenho para um objeto desenhado CStatic pelo proprietário (o controlo tem o estilo SS_OWNERDRAW).

CStatic::GetBitmap

Obtém o handle do bitmap, anteriormente definido com SetBitmap, que está associado a CStatic.

HBITMAP GetBitmap() const;

Valor de retorno

Um handle para o bitmap atual, ou NULL se nenhum bitmap foi definido.

Example

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

Obtém o cabo do cursor, anteriormente definido com SetCursor, que está associado a CStatic.

HCURSOR GetCursor();

Valor de retorno

Uma alavanca para o cursor atual, ou NULL se nenhum cursor estiver definido.

Example

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

Obtém o handle do metaficheiro melhorado, anteriormente definido com SetEnhMetafile, que está associado a CStatic.

HENHMETAFILE GetEnhMetaFile() const;

Valor de retorno

Um handle para o metaficheiro melhorado atual, ou NULL se não tiver sido definido nenhum metaficheiro melhorado.

Example

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

Obtém a alça do ícone, anteriormente definida com SetIcon, que está associada a CStatic.

HICON GetIcon() const;

Valor de retorno

Um handle para o ícone atual, ou NULL se nenhum ícone tiver sido definido.

Example

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

Associa um novo bitmap ao controlo estático.

HBITMAP SetBitmap(HBITMAP hBitmap);

Parâmetros

hBitmap
Handle do bitmap a desenhar no controlo estático.

Valor de retorno

O handler do bitmap que estava anteriormente associado ao controlo estático, ou NULL se nenhum bitmap estava associado ao controlo estático.

Observações

O bitmap será desenhado automaticamente no controlo estático. Por defeito, será desenhado no canto superior esquerdo e o controlo estático será redimensionado para o tamanho do bitmap.

Pode usar vários estilos de janelas e controlos estáticos, incluindo estes:

  • SS_BITMAP Use este estilo sempre para bitmaps.

  • SS_CENTERIMAGE Use para centrar a imagem no controlo estático. Se a imagem for maior do que o controlo estático, será cortada. Se for menor do que o controlo estático, o espaço vazio à volta da imagem será preenchido pela cor do píxel no canto superior esquerdo do bitmap.

  • O MFC fornece a classe CBitmap, que podes usar quando tens de fazer mais com uma imagem bitmap do que simplesmente chamar a função LoadBitmapWin32 . CBitmap, que contém um tipo de objeto GDI, é frequentemente usado em cooperação com CStatic, que é uma CWnd classe usada para exibir um objeto gráfico como controlo estático.

CImage é uma classe ATL/MFC que permite trabalhar mais facilmente com bitmaps independentes do dispositivo (DIB). Para mais informações, consulte CImage Classe.

  • O uso típico é fornecer CStatic::SetBitmap um objeto GDI que é devolvido pelo operador HBITMAP de um CBitmap objeto ou CImage . O código para fazer isto assemelha-se à linha seguinte.
MyStaticControl.SetBitmap(HBITMAP(MyBitmap));

O exemplo seguinte cria dois CStatic objetos no heap. Depois carrega um com um bitmap do sistema usando CBitmap::LoadOEMBitmap e o outro a partir de um ficheiro usando CImage::Load.

Example

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

Associa uma nova imagem de cursor ao controlo estático.

HCURSOR SetCursor(HCURSOR hCursor);

Parâmetros

hCursor
Handle do cursor a desenhar no controlo estático.

Valor de retorno

O cabo do cursor anteriormente associado ao controlo estático, ou NULL se nenhum cursor estivesse associado ao controlo estático.

Observações

O cursor será automaticamente desenhado no controlo estático. Por defeito, será desenhado no canto superior esquerdo e o controlo estático será redimensionado para o tamanho do cursor.

Pode usar vários estilos de controlo de janelas e estáticos, incluindo os seguintes:

  • SS_ICON Use este estilo sempre para cursores e ícones.

  • SS_CENTERIMAGE Use para centrar o controlo estático. Se a imagem for maior do que o controlo estático, será cortada. Se for menor do que o controlo estático, o espaço vazio à volta da imagem será preenchido com a cor de fundo do controlo estático.

Example

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

Associa uma nova imagem de metaficheiro melhorada ao controlo estático.

HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile);

Parâmetros

hMetaFile
Handle do metafile melhorado a ser desenhado no controlo estático.

Valor de retorno

O handle do metaficheiro melhorado anteriormente associado ao controlo estático, ou NULL se nenhum metaficheiro melhorado estivesse associado ao controlo estático.

Observações

O metaficheiro melhorado será automaticamente desenhado no controlo estático. O metafile melhorado é escalado para se ajustar ao tamanho do controlo estático.

Pode usar vários estilos de controlo de janelas e estáticos, incluindo os seguintes:

  • SS_ENHMETAFILE Use este estilo sempre para metaficheiros melhorados.

Example

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

Associa uma nova imagem de ícone ao controlo estático.

HICON SetIcon(HICON hIcon);

Parâmetros

hIcon
Handle do ícone a desenhar no controlo estático.

Valor de retorno

O cabo do ícone anteriormente associado ao controlo estático, ou NULL se nenhum ícone estivesse associado ao controlo estático.

Observações

O ícone será desenhado automaticamente no controlo estático. Por defeito, será desenhado no canto superior esquerdo e o controlo estático será redimensionado para o tamanho do ícone.

Pode usar vários estilos de controlo de janelas e estáticos, incluindo os seguintes:

  • SS_ICON Use este estilo sempre para cursores e ícones.

  • SS_CENTERIMAGE Use para centrar o controlo estático. Se a imagem for maior do que o controlo estático, será cortada. Se for menor do que o controlo estático, o espaço vazio à volta da imagem será preenchido com a cor de fundo do controlo estático.

Example

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

Consulte também

CWnd Classe
Gráfico de Hierarquia
CWnd Classe
CButton Classe
CComboBox Classe
CEdit Classe
CListBox Classe
CScrollBar Classe
CDialog Classe