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

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // MyCoordPageTranslate.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. // CMyCoordPageTranslate property page
  26. IMPLEMENT_DYNCREATE(CMyCoordPageTranslate, CPropertyPage)
  27. CMyCoordPageTranslate::CMyCoordPageTranslate() : CPropertyPage(CMyCoordPageTranslate::IDD)
  28. {
  29. //{{AFX_DATA_INIT(CMyCoordPageTranslate)
  30. m_fTranslateX = 0.0f;
  31. m_fTranslateY = 0.0f;
  32. m_fTranslateZ = 0.0f;
  33. //}}AFX_DATA_INIT
  34. }
  35. CMyCoordPageTranslate::~CMyCoordPageTranslate()
  36. {
  37. }
  38. void CMyCoordPageTranslate::DoDataExchange(CDataExchange* pDX)
  39. {
  40. CPropertyPage::DoDataExchange(pDX);
  41. //{{AFX_DATA_MAP(CMyCoordPageTranslate)
  42. DDX_Text(pDX, IDC_X, m_fTranslateX);
  43. DDX_Text(pDX, IDC_Y, m_fTranslateY);
  44. DDX_Text(pDX, IDC_Z, m_fTranslateZ);
  45. //}}AFX_DATA_MAP
  46. }
  47. BEGIN_MESSAGE_MAP(CMyCoordPageTranslate, CPropertyPage)
  48. //{{AFX_MSG_MAP(CMyCoordPageTranslate)
  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. // CMyCoordPageTranslate implementation
  56. void CMyCoordPageTranslate::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 object data
  68. // (The Camera and Points do NOT have a Translate data member)
  69. if(pDoc->m_bSelectCamera || pDoc->m_bSelectObjPoints)
  70. ResetDialogData();
  71. if(pWorld->m_pSelectedObj)
  72. pWorld->m_pSelectedObj->GetTranslation(&m_fTranslateX, &m_fTranslateY, &m_fTranslateZ);
  73. else
  74. ResetDialogData();
  75. // Dialog box is being initialized (FALSE)
  76. // or data is being retrieved (TRUE).
  77. UpdateData(FALSE);
  78. }
  79. void CMyCoordPageTranslate::GetDialogData()
  80. {
  81. // Dialog box is being initialized (FALSE)
  82. // or data is being retrieved (TRUE).
  83. UpdateData(TRUE);
  84. // Get a pointer to our Main Frame
  85. CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
  86. ASSERT_VALID(pFrame);
  87. // Get a pointer to our view's document
  88. CMyglDoc* pDoc = (CMyglDoc*)pFrame->m_pActiveView->GetDocument();
  89. ASSERT_VALID(pDoc);
  90. // Get a pointer to our document's 3dWorld
  91. C3dWorld* pWorld = pDoc->m_pWorld;
  92. ASSERT_VALID(pWorld);
  93. // Now that we have the dialog data, copy to the selected Object.
  94. // (The Camera and Points do NOT have a Translate data member)
  95. if(pDoc->m_bSelectCamera)
  96. {
  97. // Do nothing
  98. }
  99. if(pDoc->m_bSelectParentObj || pDoc->m_bSelectChildObj)
  100. {
  101. if(pWorld->m_pSelectedObj)
  102. pWorld->m_pSelectedObj->SetTranslation(m_fTranslateX, m_fTranslateY, m_fTranslateZ);
  103. }
  104. if(pDoc->m_bSelectObjPoints)
  105. {
  106. // Do nothing
  107. }
  108. }
  109. void CMyCoordPageTranslate::ResetDialogData()
  110. {
  111. m_fTranslateX = 0.0f;
  112. m_fTranslateY = 0.0f;
  113. m_fTranslateZ = 0.0f;
  114. }
  115. /////////////////////////////////////////////////////////////////////////////
  116. // CMyCoordPageTranslate message handlers
  117. BOOL CMyCoordPageTranslate::OnInitDialog() 
  118. {
  119. CPropertyPage::OnInitDialog();
  120. // Update the dialog data
  121. UpdateDialogData();
  122. return TRUE;  // return TRUE unless you set the focus to a control
  123.               // EXCEPTION: OCX Property Pages should return FALSE
  124. }
  125. void CMyCoordPageTranslate::OnChangeX() 
  126. {
  127. // Enable the Apply Now button
  128. SetModified(TRUE);
  129. }
  130. void CMyCoordPageTranslate::OnChangeY() 
  131. {
  132. // Enable the Apply Now button
  133. SetModified(TRUE);
  134. }
  135. void CMyCoordPageTranslate::OnChangeZ() 
  136. {
  137. // Enable the Apply Now button
  138. SetModified(TRUE);
  139. }