MyTabCtrl.cpp
上传用户:pumpssky
上传日期:2007-12-07
资源大小:110k
文件大小:3k
源码类别:

MacOS编程

开发平台:

C/C++

  1. // MyTabCtrl.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "gmark.h"
  5. #include "MyTabCtrl.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CMyTabCtrl
  13. CMyTabCtrl::CMyTabCtrl()
  14. {
  15.    m_DialogID[0] =IDD_DIALOG_MONITOR;
  16.    m_DialogID[1] =IDD_DIALOG_OPERATE;
  17.    m_DialogID[2] =IDD_DIALOG_SETUP;
  18.    m_DialogID[3] =IDD_DIALOG_ADVANCE;
  19.    m_Dialog[0] = new CMonitorDlg();
  20.    m_Dialog[1] = new COperateDlg();
  21.    m_Dialog[2] = new CSetupDlg();
  22.    m_Dialog[3] = new CAdvanceDlg();
  23.    m_nPageCount = 4;
  24. }
  25. CMyTabCtrl::~CMyTabCtrl()
  26. {
  27. delete m_Dialog[0];
  28. delete m_Dialog[1];
  29. delete m_Dialog[2];
  30. delete m_Dialog[3];
  31. }
  32. BEGIN_MESSAGE_MAP(CMyTabCtrl, CTabCtrl)
  33. //{{AFX_MSG_MAP(CMyTabCtrl)
  34. ON_NOTIFY_REFLECT(TCN_SELCHANGE, OnSelchange)
  35. //}}AFX_MSG_MAP
  36. END_MESSAGE_MAP()
  37. /////////////////////////////////////////////////////////////////////////////
  38. // CMyTabCtrl message handlers
  39. //This function creates the Dialog boxes once
  40. void CMyTabCtrl::InitDialogs()
  41. {
  42. m_Dialog[0]->Create(m_DialogID[0],GetParent());
  43. m_Dialog[1]->Create(m_DialogID[1],GetParent());
  44. m_Dialog[2]->Create(m_DialogID[2],GetParent());
  45. m_Dialog[3]->Create(m_DialogID[3],GetParent());
  46. }
  47. //Selection change event for the class derived from CTabCtrl
  48. void CMyTabCtrl::OnSelchange(NMHDR* pNMHDR, LRESULT* pResult) 
  49. {
  50.    // TODO: Add your control notification handler code here
  51. ActivateTabDialogs();
  52. *pResult = 0;
  53. }
  54. void CMyTabCtrl::ActivateTabDialogs()
  55. {
  56. int nSel = GetCurSel();
  57. if(m_Dialog[nSel]->m_hWnd)
  58.      m_Dialog[nSel]->ShowWindow(SW_HIDE);
  59. CRect l_rectClient;
  60. CRect l_rectWnd;
  61. GetClientRect(l_rectClient);
  62. AdjustRect(FALSE,l_rectClient);
  63. GetWindowRect(l_rectWnd);
  64. GetParent()->ScreenToClient(l_rectWnd);
  65. l_rectClient.OffsetRect(l_rectWnd.left,l_rectWnd.top);
  66. for(int nCount=0; nCount < m_nPageCount; nCount++){
  67. m_Dialog[nCount]->SetWindowPos(&wndTop, l_rectClient.left, l_rectClient.top, 
  68. l_rectClient.Width(), l_rectClient.Height(), SWP_HIDEWINDOW);
  69. }
  70. m_Dialog[nSel]->SetWindowPos(&wndTop, l_rectClient.left, l_rectClient.top, 
  71. l_rectClient.Width(), l_rectClient.Height(), SWP_SHOWWINDOW);
  72. m_Dialog[nSel]->ShowWindow(SW_SHOW);
  73. }
  74. CMonitorDlg * CMyTabCtrl::GetMonitorDlg()
  75. {
  76. return (CMonitorDlg *)m_Dialog[0];
  77. }
  78. COperateDlg * CMyTabCtrl::GetOperateDlg()
  79. {
  80. return (COperateDlg *)m_Dialog[1];
  81. }
  82. CSetupDlg * CMyTabCtrl::GetSetupDlg()
  83. {
  84. return (CSetupDlg *)m_Dialog[2];
  85. }
  86. CAdvanceDlg * CMyTabCtrl::GetAdvanceDlg()
  87. {
  88. return (CAdvanceDlg *)m_Dialog[3];
  89. }