3dPageTTF.cpp
上传用户:shxiangxiu
上传日期:2007-01-03
资源大小:1101k
文件大小:3k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // 3dPageTTF.cpp : implementation file
  3. //
  4. // glOOP (OpenGL Object Oriented Programming library)
  5. // Copyright (c) Craig Fahrnbach 1997, 1998
  6. //
  7. // OpenGL is a registered trademark of Silicon Graphics
  8. //
  9. //
  10. // This program is provided for educational and personal use only and
  11. // is provided without guarantee or warrantee expressed or implied.
  12. //
  13. // Commercial use is strickly prohibited without written permission
  14. // from ImageWare Development.
  15. //
  16. // This program is -not- in the public domain.
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #include "stdafx.h"
  20. #include "glOOP.h"
  21. #include "3dObjectDialog.h"
  22. #ifdef _DEBUG
  23. #undef THIS_FILE
  24. static char BASED_CODE THIS_FILE[] = __FILE__;
  25. #endif
  26. //////////////////////////////////////////////////////////////////
  27. // C3dPageTTF
  28. IMPLEMENT_DYNCREATE(C3dPageTTF, CPropertyPage)
  29. /////////////////////////////////////////////////////////////////////////////
  30. // C3dPageTTF dialog construction
  31. C3dPageTTF::C3dPageTTF()
  32. : CPropertyPage(C3dPageTTF::IDD)
  33. {
  34. //{{AFX_DATA_INIT(C3dPageTTF)
  35. m_fCharDepth = 0.0f;
  36. m_szName = _T("");
  37. m_szFontName = _T("");
  38. //}}AFX_DATA_INIT
  39. }
  40. /////////////////////////////////////////////////////////////////////////////
  41. // C3dPageTTF Destructor
  42. C3dPageTTF::~C3dPageTTF()
  43. {
  44. }
  45. void C3dPageTTF::DoDataExchange(CDataExchange* pDX)
  46. {
  47. CPropertyPage::DoDataExchange(pDX);
  48. //{{AFX_DATA_MAP(C3dPageTTF)
  49. DDX_Text(pDX, IDC_CHAR_DEPTH, m_fCharDepth);
  50. DDX_Text(pDX, IDC_NAME, m_szName);
  51. DDV_MaxChars(pDX, m_szName, 40);
  52. DDX_Text(pDX, IDC_FONT_NAME, m_szFontName);
  53. //}}AFX_DATA_MAP
  54. }
  55. BEGIN_MESSAGE_MAP(C3dPageTTF, CPropertyPage)
  56. //{{AFX_MSG_MAP(C3dPageTTF)
  57. ON_BN_CLICKED(IDC_CHOOSEFONT, OnChooseFont)
  58. //}}AFX_MSG_MAP
  59. END_MESSAGE_MAP()
  60. /////////////////////////////////////////////////////////////////////////////
  61. // C3dPageTTF message handlers
  62. BOOL C3dPageTTF::OnInitDialog() 
  63. {
  64. // let the base class do the default work
  65. CPropertyPage::OnInitDialog();
  66. // Set our local values to the Objects' values
  67. m_szName  = m_pObject->m_szName;
  68. m_fCharDepth = m_pObject->m_fCharDepth;
  69. m_szFontName = m_pObject->m_LogFont.lfFaceName;
  70. // Disable the data window (display only)
  71. GetDlgItem(IDC_FONT_NAME)->EnableWindow(FALSE);
  72. // Dialog box is being initialized (FALSE)
  73. // or data is being retrieved (TRUE).
  74. UpdateData(FALSE);
  75. return TRUE;  // return TRUE unless you set the focus to a control
  76.               // EXCEPTION: OCX Property Pages should return FALSE
  77. }
  78. void C3dPageTTF::OnOK() 
  79. {
  80. // Dialog box is being initialized (FALSE)
  81. // or data is being retrieved (TRUE).
  82. UpdateData(TRUE);
  83. if(m_fCharDepth != m_pObject->m_fCharDepth)
  84. // Force a rebuild of the True Type Font Glyphs
  85. m_pObject->m_bBuildLists = TRUE;
  86. // Set our Objects' values to the local values
  87. m_pObject->m_szName = m_szName; 
  88. m_pObject->m_fCharDepth = m_fCharDepth;
  89. CPropertyPage::OnOK();
  90. }
  91. void C3dPageTTF::OnChooseFont() 
  92. {
  93. if(m_pObject)
  94. {
  95. // Create the font dialog
  96. CFontDialog dlg(&m_pObject->m_LogFont, CF_EFFECTS | CF_SCREENFONTS | CF_TTONLY, NULL, this);
  97. if(dlg.DoModal() == IDOK)
  98. {
  99. m_szFontName = m_pObject->m_LogFont.lfFaceName;
  100. // Dialog box is being initialized (FALSE)
  101. // or data is being retrieved (TRUE).
  102. UpdateData(FALSE);
  103. // Force the object to rebuild the display list
  104. m_pObject->m_bBuildLists = TRUE;
  105. }
  106. }
  107. }