Property.cpp
上传用户:yongqian
上传日期:2007-01-02
资源大小:74k
文件大小:3k
源码类别:

PropertySheet

开发平台:

Visual C++

  1. // Property.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "propinprop.h"
  5. #include "PropertySheet1.h"
  6. #include "PropertySubSheet1.h"
  7. #include "Page1.h"
  8. #include "Page2.h"
  9. #include "Page3.h"
  10. #include "Property.h"
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #undef THIS_FILE
  14. static char THIS_FILE[] = __FILE__;
  15. #endif
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CProperty dialog
  18. CPropertyDlg::CPropertyDlg(CWnd* pParent /*=NULL*/)
  19. : CDialog(CPropertyDlg::IDD, pParent)
  20. {
  21. //{{AFX_DATA_INIT(CPropertyDlg)
  22. // NOTE: the ClassWizard will add member initialization here
  23. //}}AFX_DATA_INIT
  24. }
  25. CPropertyDlg::~CPropertyDlg()
  26. {
  27.   if(m_pPage1)
  28.     delete m_pPage1;
  29.   
  30.   if(m_pPage2)
  31.     delete m_pPage2;
  32.   if(m_pPage3)
  33.     delete m_pPage3;
  34.   if(m_pSheet)
  35.     delete m_pSheet;
  36. }
  37. void CPropertyDlg::DoDataExchange(CDataExchange* pDX)
  38. {
  39. CDialog::DoDataExchange(pDX);
  40. //{{AFX_DATA_MAP(CProperty)
  41. // NOTE: the ClassWizard will add DDX and DDV calls here
  42. //}}AFX_DATA_MAP
  43. }
  44. BOOL CPropertyDlg::PreTranslateMessage(MSG* pMsg)
  45. {
  46. if( pMsg->message == WM_SYSKEYDOWN && pMsg->wParam > 32 )
  47.   {
  48.   
  49.     if(m_pSheet->CheckKey(pMsg->wParam))
  50.     { 
  51.       return TRUE;
  52.     }
  53.     else
  54.       if(m_pPage1->m_pSubSheet1->CheckKey(pMsg->wParam))
  55.       {
  56.           return TRUE;
  57.       }
  58.     else
  59.       if(m_pPage2->m_pSubSheet2)
  60.       {
  61.         m_pPage2->m_pSubSheet2->CheckKey(pMsg->wParam);
  62.         return TRUE;
  63.       }
  64.   }
  65.   return CDialog::PreTranslateMessage(pMsg);  
  66.   
  67. }
  68. BOOL CPropertyDlg::OnInitDialog()
  69. {
  70.   CDialog::OnInitDialog();
  71.   
  72.   m_pPage1 = new Page1;
  73.   m_pPage2 = new Page2;
  74.   m_pPage3 = new Page3;
  75.   
  76.   m_pSheet = new PropertySheet1;
  77.   m_pSheet->AddPage(m_pPage1);
  78.   m_pSheet->AddPage(m_pPage2);
  79.   m_pSheet->AddPage(m_pPage3);
  80. m_pSheet->Create(this, WS_CHILD | WS_VISIBLE, 0);
  81. m_pSheet->ModifyStyleEx (0, WS_EX_CONTROLPARENT);
  82. m_pSheet->ModifyStyle( 0, WS_TABSTOP );
  83.   
  84.   CRect rcSheet;
  85.   GetDlgItem( IDC_PLACEHOLDER )->GetWindowRect( &rcSheet );
  86. ScreenToClient( &rcSheet );
  87.   m_pSheet->SetWindowPos( NULL, rcSheet.left-7, rcSheet.top-7, 0,0,
  88.   SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE );
  89.   return TRUE;  
  90. }
  91. BEGIN_MESSAGE_MAP(CPropertyDlg, CDialog)
  92. //{{AFX_MSG_MAP(CPropertyDlg)
  93. // NOTE: the ClassWizard will add message map macros here
  94. //}}AFX_MSG_MAP
  95. END_MESSAGE_MAP()
  96. /////////////////////////////////////////////////////////////////////////////
  97. // CPropertyDlg message handlers