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
하여 작업을 완료하면 개체를 삭제해야 합니다.
상속 계층 구조
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
클래스