본문 바로가기

Development

[VC++] SystemParametersInfo로 SPI_GETNONCLIENTMETRICS 오류시 방법(VS2008 이상)

잘 돌아가던 함수가 안돌아가는 현상~ ㅡ,.ㅡ

 

출처 http://blog.hanafos.com/blogView.asp?blogerid=yeamaec&cateNo=73026&serialNo=699

 

SystemParametersInfo로 SPI_GETNONCLIENTMETRICS 값 얻어올때 실패 나는 오류 해결방법(VS2008이상 버전)

SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ...) problem
 

 // Initially use the system message font for the GridCtrl font
        NONCLIENTMETRICS ncm;
        memset(&ncm,0,sizeof(NONCLIENTMETRICS));
        ncm.cbSize = sizeof(NONCLIENTMETRICS);
#if (WINVER >= 0x0600)
        ncm.cbSize -= 4; //<== ADD HERE!! 
#endif

        BOOL f = SystemParametersInfo(SPI_GETNONCLIENTMETRICS,sizeof(NONCLIENTMETRICS), &ncm, 0);

        VERIFY(f);
        if(f){
            memcpy (&m_LogFont, &ncm.lfMessageFont, sizeof (LOGFONT));
            m_LogFont.lfHeight = -MulDiv (11, dc.GetDeviceCaps (LOGPIXELSY), 72);
            m_LogFont.lfWeight = FW_NORMAL;
            m_LogFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
            m_LogFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
            m_LogFont.lfQuality = DEFAULT_QUALITY;
            m_LogFont.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
            m_LogFont.lfCharSet = ANSI_CHARSET;
            _tcscpy (m_LogFont.lfFaceName, _T ("Courier New"));
        }