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

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // 3dPageCone.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. // C3dPageCone
  28. IMPLEMENT_DYNCREATE(C3dPageCone, CPropertyPage)
  29. /////////////////////////////////////////////////////////////////////////////
  30. // C3dPageCone dialog construction
  31. C3dPageCone::C3dPageCone()
  32. : CPropertyPage(C3dPageCone::IDD)
  33. {
  34. m_bInitVertices = FALSE;
  35. //{{AFX_DATA_INIT(C3dPageCone)
  36. m_iSolid = -1;
  37. m_fHeight = 0.0f;
  38. m_fBaseRadius = 0.0f;
  39. m_szName = _T("");
  40. m_iSegments = 0;
  41. m_iSmooth = -1;
  42. //}}AFX_DATA_INIT
  43. }
  44. /////////////////////////////////////////////////////////////////////////////
  45. // C3dPageCone Destructor
  46. C3dPageCone::~C3dPageCone()
  47. {
  48. }
  49. void C3dPageCone::DoDataExchange(CDataExchange* pDX)
  50. {
  51. CPropertyPage::DoDataExchange(pDX);
  52. //{{AFX_DATA_MAP(C3dPageCone)
  53. DDX_Radio(pDX, IDC_RADIO_SOLID, m_iSolid);
  54. DDX_Text(pDX, IDC_HEIGHT, m_fHeight);
  55. DDX_Text(pDX, IDC_BASE_RADIUS, m_fBaseRadius);
  56. DDX_Text(pDX, IDC_NAME, m_szName);
  57. DDV_MaxChars(pDX, m_szName, 40);
  58. DDX_Text(pDX, IDC_SEGMENTS, m_iSegments);
  59. DDX_Radio(pDX, IDC_RADIO_SMOOTH, m_iSmooth);
  60. //}}AFX_DATA_MAP
  61. }
  62. BEGIN_MESSAGE_MAP(C3dPageCone, CPropertyPage)
  63. //{{AFX_MSG_MAP(C3dPageCone)
  64. ON_EN_CHANGE(IDC_BASE_RADIUS, OnChangeBaseRadius)
  65. ON_EN_CHANGE(IDC_HEIGHT, OnChangeHeight)
  66. ON_EN_CHANGE(IDC_SEGMENTS, OnChangeSegments)
  67. ON_BN_CLICKED(IDC_RADIO_SOLID, OnRadioSolid)
  68. ON_BN_CLICKED(IDC_RADIO_SMOOTH, OnRadioSmooth)
  69. //}}AFX_MSG_MAP
  70. END_MESSAGE_MAP()
  71. /////////////////////////////////////////////////////////////////////////////
  72. // C3dPageCone message handlers
  73. BOOL C3dPageCone::OnInitDialog() 
  74. {
  75. // Set our local values to the Objects' values
  76. m_szName  = m_pObject->m_szName;
  77. m_fHeight = m_pObject->m_fHeight;
  78. m_fBaseRadius = m_pObject->m_fBaseRadius;
  79. m_iSegments   = m_pObject->m_iSegments;
  80. m_iSolid  = !m_pObject->m_bSolid;
  81. m_iSmooth = !m_pObject->m_bSmooth;
  82. CPropertyPage::OnInitDialog();  // let the base class do the default work
  83. return TRUE;  // return TRUE unless you set the focus to a control
  84.               // EXCEPTION: OCX Property Pages should return FALSE
  85. }
  86. void C3dPageCone::OnOK() 
  87. {
  88. // Dialog box is being initialized (FALSE)
  89. // or data is being retrieved (TRUE).
  90. UpdateData(TRUE);
  91. // Set our Objects' values to the local values
  92. m_pObject->m_szName  = m_szName; 
  93. m_pObject->m_fBaseRadius = m_fBaseRadius;
  94. m_pObject->m_fHeight  = m_fHeight;
  95. m_pObject->m_iSegments  = m_iSegments;
  96. // Force the object to rebuild its' display list
  97. m_pObject->m_bBuildLists = TRUE;
  98. // Rebuild our objects vertices?
  99. if(m_bInitVertices)
  100. m_pObject->InitVertices();
  101. CPropertyPage::OnOK();
  102. }
  103. void C3dPageCone::OnRadioSolid() 
  104. {
  105. // Toggle the radio selection
  106. if(m_pObject->m_bSolid) {
  107. m_pObject->m_bSolid = FALSE;
  108. m_iSolid = 1;
  109. }
  110. else {
  111. m_pObject->m_bSolid = TRUE;
  112. m_iSolid = 0;
  113. }
  114. // Initialize the Dialog Data (forces DoDataExchange)
  115. UpdateData(FALSE);
  116. }
  117. void C3dPageCone::OnRadioSmooth() 
  118. {
  119. // Toggle the radio selection
  120. if(m_pObject->m_bSmooth) {
  121. m_pObject->m_bSmooth = FALSE;
  122. m_iSmooth = 1;
  123. }
  124. else {
  125. m_pObject->m_bSmooth = TRUE;
  126. m_iSmooth = 0;
  127. }
  128. // Initialize the Dialog Data (forces DoDataExchange)
  129. UpdateData(FALSE);
  130. }
  131. void C3dPageCone::OnChangeBaseRadius() 
  132. {
  133. // User has modified the cones base radius, so set our vertice
  134. // initialization flag
  135. m_bInitVertices = TRUE;
  136. }
  137. void C3dPageCone::OnChangeHeight() 
  138. {
  139. // User has modified the cones height, so set our vertice
  140. // initialization flag
  141. m_bInitVertices = TRUE;
  142. }
  143. void C3dPageCone::OnChangeSegments() 
  144. {
  145. // User has modified the cones height, so set our vertice
  146. // initialization flag
  147. m_bInitVertices = TRUE;
  148. }