kyuseo의 게임 프로그래밍

GetTextExtentPoint32 함수 사용법 및 주의사항 본문

C++ 개발

GetTextExtentPoint32 함수 사용법 및 주의사항

kyuseo 2007. 10. 30. 12:48

개요..

 

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