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

PropertySheet

开发平台:

Visual C++

  1. // PropertyPageWithPropertySheet.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ps_in_ps.h"
  5. #include "PropertyPageWithPropertySheet.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CPropertyPageWithPropertySheet property page
  13. IMPLEMENT_DYNCREATE(CPropertyPageWithPropertySheet, CPropertyPage)
  14. CPropertyPageWithPropertySheet::CPropertyPageWithPropertySheet() : CPropertyPage(CPropertyPageWithPropertySheet::IDD)
  15. {
  16. //{{AFX_DATA_INIT(CPropertyPageWithPropertySheet)
  17. // NOTE: the ClassWizard will add member initialization here
  18. //}}AFX_DATA_INIT
  19. }
  20. CPropertyPageWithPropertySheet::~CPropertyPageWithPropertySheet()
  21. {
  22. }
  23. void CPropertyPageWithPropertySheet::DoDataExchange(CDataExchange* pDX)
  24. {
  25. CPropertyPage::DoDataExchange(pDX);
  26. //{{AFX_DATA_MAP(CPropertyPageWithPropertySheet)
  27. // NOTE: the ClassWizard will add DDX and DDV calls here
  28. //}}AFX_DATA_MAP
  29. // this need for check data when user change tab in parent property sheet
  30. if(m_internal_sheet)
  31. if(!m_internal_sheet.GetActivePage()->UpdateData(pDX->m_bSaveAndValidate))
  32. pDX->Fail();
  33. }
  34. BEGIN_MESSAGE_MAP(CPropertyPageWithPropertySheet, CPropertyPage)
  35. //{{AFX_MSG_MAP(CPropertyPageWithPropertySheet)
  36. //}}AFX_MSG_MAP
  37. END_MESSAGE_MAP()
  38. /////////////////////////////////////////////////////////////////////////////
  39. // CPropertyPageWithPropertySheet message handlers
  40. BOOL CPropertyPageWithPropertySheet::OnInitDialog() 
  41. {
  42. CPropertyPage::OnInitDialog();
  43. // TODO: Add extra initialization here
  44. m_internal_sheet.EnableStackedTabs( FALSE );
  45. m_internal_sheet.Create(this, WS_CHILD | WS_VISIBLE , 0);
  46. m_internal_sheet.ModifyStyleEx (0, WS_EX_CONTROLPARENT);
  47. m_internal_sheet.ModifyStyle( 0, WS_TABSTOP );
  48. // move to left upper corner
  49. m_internal_sheet.SetWindowPos( NULL, 0, 0, 0, 0, 
  50.                         SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE );
  51. return TRUE;  // return TRUE unless you set the focus to a control
  52.               // EXCEPTION: OCX Property Pages should return FALSE
  53. }
  54. void CPropertyPageWithPropertySheet::AddPage(CPropertyPage *pPage)
  55. {
  56. m_internal_sheet.AddPage(pPage);
  57. }
  58. BOOL CPropertyPageWithPropertySheet::UpdateData(BOOL bSaveAndValidate)
  59. {
  60. if(!CPropertyPage::UpdateData(bSaveAndValidate))
  61. return FALSE;
  62. // check property sheet. Need when OK button press
  63. return m_internal_sheet.GetActivePage()->UpdateData(bSaveAndValidate);
  64. }