EnumFontComboBox.cpp
上传用户:sz81710966
上传日期:2013-03-01
资源大小:409k
文件大小:2k
源码类别:

多国语言处理

开发平台:

Visual C++

  1. // EnumFontComboBox.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. //#include "unicode.h"
  5. #include "EnumFontComboBox.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CEnumFontComboBox
  13. CEnumFontComboBox::CEnumFontComboBox()
  14. {
  15. }
  16. CEnumFontComboBox::~CEnumFontComboBox()
  17. {
  18. }
  19. BEGIN_MESSAGE_MAP(CEnumFontComboBox, CComboBox)
  20. //{{AFX_MSG_MAP(CEnumFontComboBox)
  21. // NOTE - the ClassWizard will add and remove mapping macros here.
  22. //}}AFX_MSG_MAP
  23. END_MESSAGE_MAP()
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CEnumFontComboBox message handlers
  26. void CEnumFontComboBox::PreSubclassWindow() 
  27. {
  28. // TODO: Add your specialized code here and/or call the base class
  29. ProcessEnumFonts();
  30. CComboBox::PreSubclassWindow();
  31. }
  32. void CEnumFontComboBox::ProcessEnumFonts()
  33. {
  34. CStringList m_fontlist;
  35. m_fontlist.RemoveAll();
  36. LOGFONT lf;
  37. memset(&lf, 0, sizeof(LOGFONT));
  38. EnumFontFamiliesEx(GetParent()->GetDC()->GetSafeHdc(), &lf, (FONTENUMPROC)EnumFontsProc, (LPARAM)&m_fontlist, 1);
  39. ResetContent();
  40. for (POSITION ps = m_fontlist.GetHeadPosition(); ps != NULL;){
  41. AddString( m_fontlist.GetNext(ps) );
  42. }
  43. }
  44. int CALLBACK CEnumFontComboBox::EnumFontsProc(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, int FontType, LPARAM lParam)
  45. {
  46. if ( strlen( (char *)lpelfe->elfFullName ) != 0)
  47. {
  48. CStringList *sl = (CStringList *) lParam;
  49. sl->AddTail(lpelfe->elfFullName );
  50. }
  51. return 1;
  52. }