다음을 통해 공유


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
정적 컨트롤의 위치와 크기를 지정합니다. 구조체 또는 CRect 개체일 RECT 수 있습니다.

pParentWnd
부모 창(일반적으로 개체)을 CDialog 지정 CStatic 합니다. 해서는 안 됩니다 NULL.

nID
정적 컨트롤의 컨트롤 ID를 지정합니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

두 단계로 개체를 CStatic 생성합니다. 먼저 생성자를 CStatic호출한 다음 Windows 정적 컨트롤을 만들어 개체에 CStatic 연결하는 호출Create을 실행합니다.

정적 컨트롤에 다음 창 스타일을 적용합니다.

  • 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

에 연결된 CStatic비트맵SetBitmap의 핸들을 가져옵니다.

HBITMAP GetBitmap() const;

Return Value

현재 비트맵에 대한 핸들이거나 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();

Return Value

현재 커서에 대한 핸들이거나 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

에 연결된 CStatic확장 메타파일SetEnhMetafile의 핸들을 가져옵니다.

HENHMETAFILE GetEnhMetaFile() const;

Return Value

현재 향상된 메타파일의 핸들이거나 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;

Return Value

현재 아이콘에 대한 핸들이거나 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
정적 컨트롤에 그릴 비트맵의 핸들입니다.

Return Value

이전에 정적 컨트롤과 연결되었거나 NULL 정적 컨트롤과 연결된 비트맵이 없는 경우 비트맵의 핸들입니다.

설명

비트맵은 정적 컨트롤에 자동으로 그려집니다. 기본적으로 왼쪽 위 모서리에 그려지고 정적 컨트롤의 크기가 비트맵의 크기로 조정됩니다.

다음과 같은 다양한 창 및 정적 컨트롤 스타일을 사용할 수 있습니다.

  • SS_BITMAP 비트맵에는 항상 이 스타일을 사용합니다.

  • SS_CENTERIMAGE 이미지를 정적 컨트롤의 가운데에 배치하는 데 사용합니다. 이미지가 정적 컨트롤보다 크면 잘립니다. 정적 컨트롤보다 작은 경우 이미지 주위의 빈 공간은 비트맵의 왼쪽 위 모서리에 있는 픽셀의 색으로 채워집니다.

  • MFC는 Win32 함수LoadBitmap를 호출하는 것보다 비트맵 이미지로 더 많은 작업을 수행해야 할 때 사용할 수 있는 클래스CBitmap를 제공합니다. CBitmap한 종류의 GDI 개체를 포함하는 CWnd/>는 그래픽 개체를 정적 컨트롤로 표시하는 데 사용되는 클래스인 와 CStatic협력하는 데 자주 사용됩니다.

CImage 는 디바이스 DIB(독립 비트맵)를 보다 쉽게 사용할 수 있는 ATL/MFC 클래스입니다. 자세한 내용은 클래스를 참조 CImage 하세요.

  • 일반적인 사용법은 또는 CImage 개체의 HBITMAP 연산자가 반환하는 GDI 개체를 CBitmap 제공하는 CStatic::SetBitmap 것입니다. 이 작업을 수행하는 코드는 다음 줄과 유사합니다.
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
정적 컨트롤에 그릴 커서의 핸들입니다.

Return Value

이전에 정적 컨트롤과 연결된 커서의 핸들이거나 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
정적 컨트롤에 그릴 향상된 메타파일의 핸들입니다.

Return Value

이전에 정적 컨트롤과 연결된 향상된 메타파일의 핸들이거나 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
정적 컨트롤에 그릴 아이콘의 핸들입니다.

Return Value

이전에 정적 컨트롤과 연결된 아이콘의 핸들이거나 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 클래스