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

书籍源码

开发平台:

Visual C++

  1. // WizFontSizesComboBox.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "EnumFonts.h"
  5. #include "WizFontSizesComboBox.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CWizFontSizesComboBox
  13. CWizFontSizesComboBox::CWizFontSizesComboBox()
  14. {
  15. }
  16. CWizFontSizesComboBox::~CWizFontSizesComboBox()
  17. {
  18. }
  19. BEGIN_MESSAGE_MAP(CWizFontSizesComboBox, CComboBox)
  20. //{{AFX_MSG_MAP(CWizFontSizesComboBox)
  21. ON_WM_COMPAREITEM_REFLECT()
  22. //}}AFX_MSG_MAP
  23. END_MESSAGE_MAP()
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CWizFontSizesComboBox message handlers
  26. //初始化列表框
  27. void CWizFontSizesComboBox::Initialize (const CWizFontsEnumerator::Font* font)
  28. {
  29. //清空列表框
  30. ResetContent();
  31. ASSERT(font);
  32. //将该字体所有的大小加到列表框中
  33. CWordArray sizes;
  34. font->FillSizes(sizes);
  35. const int imax = sizes.GetSize();
  36. ASSERT(imax > 0);
  37. CString str;
  38. for (int i = 0; i < imax; i++)
  39. {
  40. int s = sizes[i];
  41. str.Format(_T("%d"), s);
  42. int j = AddString(str);
  43. if (j >= 0)
  44. {
  45. SetItemData(j, s);
  46. }
  47. else
  48. {
  49. ASSERT(0);
  50. }
  51. }
  52. if (imax > 0)
  53. SetCurSel(0);
  54. }
  55. int CWizFontSizesComboBox::OnCompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct) 
  56. {
  57. int i = (int(lpCompareItemStruct->itemData1) - int(lpCompareItemStruct->itemData2));
  58. if (i < 0)
  59. return -1;
  60. else if (i == 0)
  61. return 0;
  62. else
  63. return 1;
  64. }
  65. //获得当前选择的大小
  66. int CWizFontSizesComboBox::GetCurrentSize()
  67. {
  68. int i = GetCurSel();
  69. if (i >= 0)
  70. {
  71. int j = GetItemData(i);
  72. if (j >= 0)
  73. {
  74. return j;
  75. }
  76. else
  77. { ASSERT(0); }
  78. }
  79. else
  80. { ASSERT(0); }
  81. return -1;
  82. }