GetTextExtentPoint32 함수는 글자의 가로, 세로 크기를 얻을때 유용한 함수입니다. 이 함수의 사용법과 주의사항을 알아봅니다.
MSDN 에 등록된 함수의 원형은 다음과 같습니다.
BOOL GetTextExtentPoint( HDC hdc, // handle to DC LPCTSTR lpString, // text string int cbString, // number of characters in string LPSIZE lpSize // string size ); |
실제 사용방법은 아래와 같습니다.
1. 폰트를 생성한다. 2. 폰트를 HDC 에 할당한다. 3. GetTextExtentPoint 함수를 이용하여 원하는 문장의 크기를 구한다. |
이 함수의 주의할 점은 호출이전에 반드시 SelectObject 을 사용해서 폰트를 DC에 설정한 후 사용하시기 바랍니다.
코드 |
1. 폰트를 생성한다.
CFont font[3];
font[0].CreateFont( 20, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, NONANTIALIASED_QUALITY, DEFAULT_PITCH, "굴림" );
font[1].CreateFont( 12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, NONANTIALIASED_QUALITY, DEFAULT_PITCH, "굴림체" );
font[2].CreateFont( 7, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, NONANTIALIASED_QUALITY, DEFAULT_PITCH, "돋움체" );
CString str = "가나다abcABCD#!@^&%*";
CSize size; CDC* pDC = GetDC();
2. 폰트를 HDC 에 할당한다.
pDC->SelectObject( &font[0] );
3. GetTextExtentPoint 함수를 이용하여 원하는 문장의 크기를 구한다.
GetTextExtentPoint( pDC->GetSafeHdc(), str, str.GetLength(), &size );
CString str2; str2.Format( "굴림크기= ( %d, %d )", size.cx, size.cy ); AfxMessageBox( str2 );
pDC->SelectObject( &font[1] ); GetTextExtentPoint( pDC->GetSafeHdc(), str, str.GetLength(), &size );
str2.Format( "굴림체크기= ( %d, %d )", size.cx, size.cy ); AfxMessageBox( str2 );
pDC->SelectObject( &font[2] ); GetTextExtentPoint( pDC->GetSafeHdc(), str, str.GetLength(), &size );
str2.Format( "돋움체크기= ( %d, %d )", size.cx, size.cy ); AfxMessageBox( str2 );
ReleaseDC( pDC ); |
'C & C++ > C & C++' 카테고리의 다른 글
[Tip] ',' 을 3자리마다 붙여서 통화 화폐의 문자열을 리턴 (0) | 2011.03.27 |
---|---|
[뮤텍스] Mutex 하나의 프로그램만 실행 (0) | 2011.03.27 |
[Tip] 특정시간과 날짜에만 실행 (0) | 2011.03.27 |
C & C++ 가이드 라인(Guide Line) (0) | 2011.03.27 |
RealDeleteFile (0) | 2011.03.27 |
댓글