MyCoordPagePosition.cpp
上传用户:cding2008
上传日期:2007-01-03
资源大小:1812k
文件大小:5k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // MyCoordPagePosition.cpp : implementation file
  3. //
  4. // ModelMagic 3D and 'glOOP' (OpenGL Object Oriented Programming library)
  5. // Copyright (c) Craig Fahrnbach 1997, 1999
  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. /////////////////////////////////////////////////////////////////////////////
  17. #include "stdafx.h"
  18. #include "ModelMagic3D.h"
  19. #ifdef _DEBUG
  20. #define new DEBUG_NEW
  21. #undef THIS_FILE
  22. static char THIS_FILE[] = __FILE__;
  23. #endif
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CMyCoordPagePosition property page
  26. IMPLEMENT_DYNCREATE(CMyCoordPagePosition, CPropertyPage)
  27. CMyCoordPagePosition::CMyCoordPagePosition() : CPropertyPage(CMyCoordPagePosition::IDD)
  28. {
  29. //{{AFX_DATA_INIT(CMyCoordPagePosition)
  30. m_fPositionX = 0.0f;
  31. m_fPositionY = 0.0f;
  32. m_fPositionZ = 0.0f;
  33. //}}AFX_DATA_INIT
  34. }
  35. CMyCoordPagePosition::~CMyCoordPagePosition()
  36. {
  37. }
  38. void CMyCoordPagePosition::DoDataExchange(CDataExchange* pDX)
  39. {
  40. CPropertyPage::DoDataExchange(pDX);
  41. //{{AFX_DATA_MAP(CMyCoordPagePosition)
  42. DDX_Text(pDX, IDC_X, m_fPositionX);
  43. DDX_Text(pDX, IDC_Y, m_fPositionY);
  44. DDX_Text(pDX, IDC_Z, m_fPositionZ);
  45. //}}AFX_DATA_MAP
  46. }
  47. BEGIN_MESSAGE_MAP(CMyCoordPagePosition, CPropertyPage)
  48. //{{AFX_MSG_MAP(CMyCoordPagePosition)
  49. ON_EN_CHANGE(IDC_X, OnChangeX)
  50. ON_EN_CHANGE(IDC_Y, OnChangeY)
  51. ON_EN_CHANGE(IDC_Z, OnChangeZ)
  52. //}}AFX_MSG_MAP
  53. END_MESSAGE_MAP()
  54. /////////////////////////////////////////////////////////////////////////////
  55. // CMyCoordPagePosition implementation
  56. void CMyCoordPagePosition::UpdateDialogData()
  57. {
  58. // Get a pointer to our Main Frame
  59. CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
  60. ASSERT_VALID(pFrame);
  61. // Get a pointer to our view's document
  62. CMyglDoc* pDoc = (CMyglDoc*)pFrame->m_pActiveView->GetDocument();
  63. ASSERT_VALID(pDoc);
  64. // Get a pointer to our document's 3dWorld
  65. C3dWorld* pWorld = pDoc->m_pWorld;
  66. ASSERT_VALID(pWorld);
  67. // Get the appropriate camera/object/point data
  68. if(pDoc->m_bSelectCamera)
  69. {
  70. C3dCamera* pCamera = &pFrame->m_pActiveView->m_Camera;
  71. ASSERT_VALID(pCamera);
  72. pCamera->GetOrigin(&m_fPositionX, &m_fPositionY, &m_fPositionZ);
  73. }
  74. if(pDoc->m_bSelectParentObj || pDoc->m_bSelectChildObj)
  75. {
  76. if(pWorld->m_pSelectedObj)
  77. pWorld->m_pSelectedObj->GetOrigin(&m_fPositionX, &m_fPositionY, &m_fPositionZ);
  78. else
  79. ResetDialogData();
  80. }
  81. if(pDoc->m_bSelectObjPoints)
  82. {
  83. if(pWorld->m_pSelectedPnt)
  84. pWorld->m_pSelectedPnt->GetOrigin(&m_fPositionX, &m_fPositionY, &m_fPositionZ);
  85. else
  86. ResetDialogData();
  87. }
  88. // Dialog box is being initialized (FALSE)
  89. // or data is being retrieved (TRUE).
  90. UpdateData(FALSE);
  91. }
  92. void CMyCoordPagePosition::GetDialogData()
  93. {
  94. // Dialog box is being initialized (FALSE)
  95. // or data is being retrieved (TRUE).
  96. UpdateData(TRUE);
  97. // Get a pointer to our Main Frame
  98. CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
  99. ASSERT_VALID(pFrame);
  100. // Get a pointer to our view's document
  101. CMyglDoc* pDoc = (CMyglDoc*)pFrame->m_pActiveView->GetDocument();
  102. ASSERT_VALID(pDoc);
  103. // Get a pointer to our document's 3dWorld
  104. C3dWorld* pWorld = pDoc->m_pWorld;
  105. ASSERT_VALID(pWorld);
  106. // Now that we have the dialog data, copy to the selected Camera, Object or Point
  107. if(pDoc->m_bSelectCamera)
  108. {
  109. C3dCamera* pCamera = &pFrame->m_pActiveView->m_Camera;
  110. ASSERT_VALID(pCamera);
  111. pCamera->SetOrigin(m_fPositionX, m_fPositionY, m_fPositionZ);
  112. }
  113. if(pDoc->m_bSelectParentObj || pDoc->m_bSelectChildObj)
  114. {
  115. if(pWorld->m_pSelectedObj)
  116. pWorld->m_pSelectedObj->SetOrigin(m_fPositionX, m_fPositionY, m_fPositionZ);
  117. }
  118. if(pDoc->m_bSelectObjPoints)
  119. {
  120. if(pWorld->m_pSelectedPnt)
  121. pWorld->m_pSelectedPnt->SetOrigin(m_fPositionX, m_fPositionY, m_fPositionZ);
  122. }
  123. }
  124. void CMyCoordPagePosition::ResetDialogData()
  125. {
  126. m_fPositionX = 0.0f;
  127. m_fPositionY = 0.0f;
  128. m_fPositionZ = 0.0f;
  129. }
  130. /////////////////////////////////////////////////////////////////////////////
  131. // CMyCoordPagePosition message handlers
  132. BOOL CMyCoordPagePosition::OnInitDialog() 
  133. {
  134. CPropertyPage::OnInitDialog();
  135. // Get a pointer to our Main Frame
  136. CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
  137. if(pFrame)
  138. // Update the dialog data
  139. UpdateDialogData();
  140. return TRUE;  // return TRUE unless you set the focus to a control
  141.               // EXCEPTION: OCX Property Pages should return FALSE
  142. }
  143. void CMyCoordPagePosition::OnChangeX() 
  144. {
  145. // Enable the Apply Now button
  146. SetModified(TRUE);
  147. }
  148. void CMyCoordPagePosition::OnChangeY() 
  149. {
  150. // Enable the Apply Now button
  151. SetModified(TRUE);
  152. }
  153. void CMyCoordPagePosition::OnChangeZ() 
  154. {
  155. // Enable the Apply Now button
  156. SetModified(TRUE);
  157. }