WizFontNamesComboBox.cpp
上传用户:xsxdsb
上传日期:2009-12-14
资源大小:672k
文件大小:2k
源码类别:

书籍源码

开发平台:

Visual C++

  1. // WizFontNamesComboBox.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "EnumFonts.h"
  5. #include "WizFontNamesComboBox.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CWizFontNamesComboBox
  13. CWizFontNamesComboBox::CWizFontNamesComboBox()
  14. {
  15. }
  16. CWizFontNamesComboBox::~CWizFontNamesComboBox()
  17. {
  18. }
  19. BEGIN_MESSAGE_MAP(CWizFontNamesComboBox, CComboBox)
  20. //{{AFX_MSG_MAP(CWizFontNamesComboBox)
  21. // NOTE - the ClassWizard will add and remove mapping macros here.
  22. //}}AFX_MSG_MAP
  23. END_MESSAGE_MAP()
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CWizFontNamesComboBox message handlers
  26. //初始化列表框
  27. void CWizFontNamesComboBox::Initialize(const CWizFontsEnumerator& fonts)
  28. {
  29. //清空列表框的内容
  30. ResetContent();
  31. //将获得的字体加入到列表框中
  32. for (int i = 0; i < fonts.GetFontsCount(); i++)
  33. {
  34. const CWizFontsEnumerator::Font* pFont = fonts.GetFont(i);
  35. if (pFont)
  36. {
  37. CString name = pFont->Name();
  38. if (pFont->IsTrueType())
  39. name += _T("(TT)");
  40. int j = AddString(name);
  41. if (j >= 0)
  42. {
  43. SetItemData(j, i);
  44. }
  45. else
  46. {
  47. ASSERT(0);
  48. }
  49. }
  50. else
  51. { ASSERT(0); }
  52. }
  53. //将第一种字体设为被选择
  54. if (fonts.GetFontsCount() > 0)
  55. SetCurSel(0);
  56. }
  57. BOOL CWizFontNamesComboBox::PreCreateWindow(CREATESTRUCT& cs) 
  58. {
  59. return CComboBox::PreCreateWindow(cs);
  60. }
  61. //获得当前选择的字体
  62. const CWizFontsEnumerator::Font* CWizFontNamesComboBox::GetCurrentFont(const CWizFontsEnumerator& fonts)
  63. {
  64. int i = GetCurSel();
  65. //如果有被选择的条目
  66. if (i >= 0)
  67. {
  68. int j = GetItemData(i);
  69. if (j >= 0)
  70. {
  71. //获得该字体
  72. const CWizFontsEnumerator::Font* font = fonts.GetFont(j);
  73. ASSERT(font);
  74. return font;
  75. }
  76. else
  77. {
  78. ASSERT(0);
  79. }
  80. }
  81. else
  82. {
  83. ASSERT(0); 
  84. }
  85. return NULL;
  86. }