기본 콘텐츠로 건너뛰기

MFC 폰트 설정과 크기로 인한 처리

원본 링크: http://p7kell.wikidot.com/mfc-how-to-change-point-fontsize-to-logfont-size

계산 공식에 대해서는 원본 글 작성하신 분이 설명을 잘 해놓으셨군요.
다른 참고 내용도 많던데, 방문하셔서 보세요.


// mfc 에서 폰트가 너무 적게 나오는 문제,
// 전에 이와 같은 처리를 했던 것 같은데, 기억이 안남 --;;
//  위 내용을 참고해서 대략 다음과 같은 형태로 다이얼로그 내에서 사용하면 됨.

class CFontMaker
{
public:
    CFontMaker()
    {
           int nFontHeight = 8;
           HDC hDC = ::GetDC( this->GetSafeHwnd() );
           nFontHeight = -MulDiv( nFontHeight, GetDeviceCaps( hDC, LOGPIXELSY ), 72 );
           ::ReleaseDC(this->GetSafeHwnd(), hDC);
           m_pfont_default = new CFont();
           m_pfont_default->CreateFont(
                        -nFontHeight, // nHeight
                        0, // nWidth
                        0, // nEscapement
                        0, // nOrientation
                        FW_NORMAL, // nWeight
                        FALSE, // bItalic
                        FALSE, // bUnderline
                        FALSE, // cStrikeOut
                        DEFAULT_CHARSET, // nCharSet
                        OUT_DEFAULT_PRECIS, // nOutPrecision
                        CLIP_DEFAULT_PRECIS, // nClipPrecision
                        DEFAULT_QUALITY, // nQuality
                        DEFAULT_PITCH | FF_DONTCARE, // nPitchAndFamily
                        _T("Tahoma") // lpszFacename
            );
    }
    ~CFontMaker()
    {
           if( NULL != m_pfont_default )
           {
                  m_pfont_default->DeleteObject();
                  delete m_pfont_default;
                  m_pfont_default = NULL;
           }
    }
   void OnInitDialog()
    {
                  SetFont(m_pfont_default);
    }
public:
    CFont* m_pfont_default = NULL;
};

댓글

이 블로그의 인기 게시물

이클립스 실행 오류와 eclipse.ini 수정

1. 실행시 Java was started but returned exit code=13 에러가 날때 --> Win7 64bit를 사용중인데, 이 오류가 발생하고 있었습니다. 제가 자바도 이클립스용도 32비트 버젼을 사용중이었는데, 자바만 64비트용으로 설치를 했더니, 생긴 문제였습니다. 이클립스 64비트를 설치하시면 해결됩니다. 2.이클립스 폴더내 eclipse.ini 기본값(보통 아래 처럼 되어 있습니다.) -startup plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810 -product org.eclipse.epp.package.jee.product --launcher.defaultAction openFile --launcher.XXMaxPermSize 256M -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile -vmargs -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m 3.실행하자 마자 javaw.exe 찾기 실패시  --> jdk가 설치된 경로(javaw.exe가 있는 경로)를 추가해준다. 맨 아래쪽에 삽입하니 안되더군요.(왜죠?) -vmargs 윗부분에 삽입했습니다. 다른 블로그님 들 글에선 open 위쪽에 쓰니 괜찮다는 글도 있으니 참고하세요. -vm c:\Program Files\java\jre6\bin\javaw.exe 4.이클립스 속도 향상을 위한 추가값 출처:  http://blog.naver.com/sungback/90097516641 검색도중 이클립스 속도 향상 정보를 발

[c#.net] WPF 사용 중 xaml관련 실행시 오류 와 대처 방법

wpf 사용 중 xaml관련 실행시 오류 가 발생해서 자그마치 2일을 소비 했다..--;; 오류 내용은 아래와 같다. ================================== 'System.Windows.Markup.XamlParseException' 형식의 첫째 예외가 PresentationFrameWork.dll에서 발생했습니다. 추가 정보: '지정된 바인딩 제약 조건과 일치하는 'PapaZone.MainWindow' 형식에 대한 생성자 호출에서 예외가 throw 되었습니다.' 줄 번호 '21' 및 줄 위치 '9' 이 예외에 대한 처리기가 있으면 프로그램을 안전하게 계속할 수 있습니다. [] 이 예외 형식이 throw되면 중단 ================================== 위 Xaml 오류 메세지만으로는 내용 추적 불가하여, 도대체 뭔가 했다. 검색해도 뚜렷한 답변은 없었지만, 여러가지 의견을 종합해 보면 아래와 같다. 1. xmlns 관련 파일 과 관련된 파일 로딩 실패 이거나, 2. 신규로 추가된 namespace 에 속한 태그 사용시 오류로 판단되어 태그 하나씩 삽입하며 테스트 해봐야 한다고 함. 해결한 지금에 원인을 보면, xaml 에서 clr-namespace 로 추가된 항목들이 로딩에 실패해서 발생한 것이며, 추가된 항목은 있었으나, 이것과 연결된 파일이 없어서 로딩되지 않는 것이 문제였다. 오늘도 즐거운 하루~~

[MSSQL] SQL Server 에 원격 접속을 못하는 경우 조치 방법

[MSSQL] SQL Server 에 원격 접속을 못하는 경우 조치 방법 내부 오류 추적 결과 다음과 같이 나옴. [Microsoft][ODBC Driver 13 for SQL Server]TCP Provider: 대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다. SqlState : 08001, NativeError : 10061 오류 원인과 처리 1.SQL 서버 로그인 계정 틀린 경우 -> A.SQL Managerment Studio에서 사용할 DB 접속 '로그인' 사용할 계정의 아이디/암호 확인 2.TCP/IP 접속 권한이 없는 경우 -> A.SQL Server 구성 관리자를 실행에서 TCP/IP 허용 되어 있는지 확인 B. 서비스 포트 값이 (보통 1433) 맞는지 확인 C. 외부에서 접속하는 경우에는 방화벽 허용 되엉 있는지 확인 C. 서비스 재시작 3.Windows 인증 모드만 허용 인 경우 -> A.SQL Managerment Studio에서 사용할 DB 접속하고, 우클릭 하여 속성 정보 확인해서 B.연결에서 인증모드 '로그인' 사용할 계정의 아이디/암호 확인 4.'exec Sp_ReadErrorLog' 명령어를 사용해서, 로그인 실패 로그를 확인해서 원인을 분석한다.