2012-05-01 4 views
1

내 WTL 앱에서 정적 라벨의 글꼴을 변경하려고합니다. 그러나 CreatePointFont는 NULL을 반환합니다. 왜 이것이 될 수 있을까요? CreatePointFont()CreatePointFont()가 NULL을 반환하는 이유는 무엇입니까?

CFont font; 

font.CreatePointFont(120, _T("Segoe UI")); 
text.Attach(GetDlgItem(IDC_MAINTEXT)); 
text.SetFont(font); 
+0

CreatePointFont의 변형에 대한 MSDN 페이지에 대한 링크가 있습니까? 내가 찾는 유일한 것은 세 가지 매개 변수가 필요하며 세 번째 매개 변수는 DC라는 것입니다. 적절한 직류를 통과하고 있습니까? –

답변

1

CreatePointFont는 NULL을 반환한다는 확신을 열거하는 데 사용할 수 있습니다?

글꼴을 설정하려면 메모리에 있어야하지만 코드 조각에서 변수 font은 설정 한 후에 바로 삭제됩니다.

text 개체 (예 : MFC 개체를 사용하는 경우 클래스)의 수명 동안 삭제되지 않는 변수를 선언하십시오.

+0

그게 범인 이었어. 내 OnInitDialog가 끝나자 마자'font' 변수가 파괴되었습니다. – user555

+0

"글꼴을 설정하려면 메모리에 남아 있어야합니다."Andrew, 나는 방금 날 만들었습니다! :) – fduff

1

nPointSize 인수는 아마도 12/10 = 1.2 점의 당신의 크기가 너무 작은, 지점 1/10입니다. 아마도 120을 전달할 예정이었습니다.

비즈니스 응용 프로그램에 사용하는 경우 더 가벼운 경우 ban comic sans 웹 사이트를 방문 할 수도 있습니다. 조건을 실패하지만, 그것은 내 생각 엔 그것이 EnumFontFamilies 기능에 의해 나열됩니다

선택하면 시스템에서 지정된 글꼴이없는 (견적 documentation을 형성)에

+0

크기가 맞지만 여전히 NULL을 반환합니다. 그리고 Comic Sans에 관해서는 나는 방금 가지고 있던 글꼴을 가져갔습니다. 나는 만화가 사용되어서는 안된다는 데 동의한다. – user555

+0

아마도 AtlGetControlFont()도 NULL을 반환한다는 사실과 관련이 있습니까? – user555

1

문서는 너무 자세한되지 않습니다 :

윈도우이거나 EnumFontFamilies 기능 현재 사용 가능한 모든 글꼴

+0

Comic Sans에서 Arial에 이르기까지 설치된 모든 글꼴로 시도했습니다. – user555