2014-09-23 4 views
2

유니 코드로 빌드 한 MFC CListctrl로 데스크톱 응용 프로그램을 개발하고 있습니다.such 및 Microsoft MFC CListCtrl과 같은 그림 이모티콘을 표시하는 방법?

listctrl은! @ # $ % ︿ & *(), 을 올바르게 표시 할 수 있지만 Emojis ☔ 및는 표시 할 수 없습니다.

"가상 listctrl"이고 lvItem.pszText는 for에 대해 UNICODE "26 14"을 올바르게 표시하지만 올바르게 표시되지 않는 것 같습니다.

Windows 7에서 Visual Studio 2012를 사용하고 있습니다. 모든 의견을 환영합니다. 감사합니다.

[수정 됨 20140929]는

감사 베르너 헨즈, 나는 "Segoe UI 기호는"제대로 Windows에서 이모티콘을 표시 할 수 있다는 것을 발견했다 7

Microsoft KB2729094 titled “An update for the Segoe UI symbol font in Windows 7 and in Windows Server 2008 R2 is available” is presumed to be made available through Windows Update soon. 

http://www.istartedsomething.com/20120818/microsoft-backports-windows-8-emoji-for-segoe-ui-symbol-to-windows-7/는 그러나 "Segoe UI 기호는"실패에 보인다 ("Segoe UI"로 올바르게 표시됨).

+2

그림 이모티콘에는 DirectWrite가 필요하며 MFC는이를 래핑하지 않습니다. MFC는 user32에 상당히 매달렸다. 내가 아는 데스크탑 클래스 라이브러리와 통합되지 않습니다. –

+1

DirectWrite를 소유자가 그린 목록 상자에서 사용할 수 있습니까? (왜 그런지는 모르겠지만 물어 보는 것이 더 안전합니다.) – usr2564301

+1

확실히 기술적으로 가능합니다. 그러나이 불만 기반 프로그래밍은 COM을 배워야하는 프로그래머, 일관성없는 텍스트 렌더링에 대한 버그 보고서를 작성하는 QA 및 저렴한 모니터에서 텍스트의 가독성에 대해 불평하는 사용자가 재미를 느끼게합니다. –

답변

1

유의해야 할 몇 가지 사항이 있습니다.

첫 번째 프로그램은 RegisterWindowW이 아니라 RegisterWindowA이 아니므로 창은 유니 코드 창으로 인스턴스화됩니다. 유니 코드 용으로 컴파일하는 경우 MFC에서 제공하는 기본 창 클래스에 대해이 작업이 자동으로 수행됩니다.

두 번째로 필요한 문자를 표시 할 수있는 글꼴을 선택해야합니다. 당신은 사용되는 글꼴을 확인하고 어쩌면 (한 OnCreate에서 가져온 내 코드에서)이 코드로 변경할 수 있습니다

CFont * pFont = m_listctrl.GetFont(); 
ASSERT((HFONT)m_fontListLog == nullptr); 
LOGFONT logfont; 
VERIFY(pFont->GetLogFont(&logfont)); 
_tcscpy(logfont.lfFaceName, _T("my desired font")); 
VERIFY(m_font.CreateFontIndirect(&logfont)); 
m_listctrl.SetFont(&m_font); 

당신은 charmap.exe에있는 문자를 지원하는 글꼴을 확인할 수 있습니다.

글꼴 "Segoe UI"와 문자 0x214e를 사용하여 성공적으로 테스트했지만 글꼴이 지원하지 않으므로 0x2614를 출력 할 수 없습니다.

0

감사 베르너 헨즈, 나는 "Segoe UI 기호는"7 http://www.istartedsomething.com/20120818/microsoft-backports-windows-8-emoji-for-segoe-ui-symbol-to-windows-7/

마이크로 소프트 KB2729094 제목 " 에서 Segoe UI 기호 글꼴에 대한 업데이트 윈도우 7 제대로 Windows에서 이모티콘을 표시 할 수 있다는 것을 발견했다 및 Windows Server 2008 R2를 사용할 수 있습니다. "라는 메시지는 으로 추후 Windows Update를 통해 제공 될 예정입니다.

그러나 한국어 문자 ("Segoe UI"로 올바르게 표시됨)에서 "Segoe UI Symbol"이 실패한 것 같습니다.

+0

이 질문에 대한 답을 제공하지 않습니다.비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남기십시오. 자신의 게시물에 언제든지 댓글을 달 수 있으며 충분한 [평판] (http://stackoverflow.com/help/whats-reputation)을 얻으면 [모든 게시물에 댓글을 달 수] 있어야합니다 (http://stackoverflow.com/help/privileges/comment). 그동안 답변을 사용하여 의견을 게시하지 마십시오. –

+0

에드 코트렐 (Ed Cotrell)과 모나 크래프트 (Monacraft)에게 감사의 말을 전하며,이 질문에 대한 답변을 삭제할 것입니다. – pac