formviewView.cpp
上传用户:hjw22cn
上传日期:2007-01-11
资源大小:192k
文件大小:5k
源码类别:

Tab控件

开发平台:

Visual C++

  1. // formviewView.cpp : implementation of the CFormviewView class
  2. //
  3. #include "stdafx.h"
  4. #include "formview.h"
  5. #include "formviewDoc.h"
  6. #include "formviewView.h"
  7. #include "SheetInDlg.h"
  8. #include "TabDataSheet.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CFormviewView
  16. IMPLEMENT_DYNCREATE(CFormviewView, CFormView)
  17. BEGIN_MESSAGE_MAP(CFormviewView, CFormView)
  18. //{{AFX_MSG_MAP(CFormviewView)
  19. ON_WM_SIZE()
  20. //}}AFX_MSG_MAP
  21. // Standard printing commands
  22. ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
  23. ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
  24. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
  25. END_MESSAGE_MAP()
  26. /////////////////////////////////////////////////////////////////////////////
  27. // CFormviewView construction/destruction
  28. CFormviewView::CFormviewView()
  29. : CFormView(CFormviewView::IDD)
  30. {
  31. //{{AFX_DATA_INIT(CFormviewView)
  32. // NOTE: the ClassWizard will add member initialization here
  33. //}}AFX_DATA_INIT
  34. // TODO: add construction code here
  35. m_pSheet = NULL;
  36. }
  37. CFormviewView::~CFormviewView()
  38. {
  39. }
  40. void CFormviewView::DoDataExchange(CDataExchange* pDX)
  41. {
  42. CFormView::DoDataExchange(pDX);
  43. //{{AFX_DATA_MAP(CFormviewView)
  44. // NOTE: the ClassWizard will add DDX and DDV calls here
  45. //}}AFX_DATA_MAP
  46. }
  47. BOOL CFormviewView::PreCreateWindow(CREATESTRUCT& cs)
  48. {
  49. // TODO: Modify the Window class or styles here by modifying
  50. //  the CREATESTRUCT cs
  51. return CFormView::PreCreateWindow(cs);
  52. }
  53. void CFormviewView::OnInitialUpdate()
  54. {
  55. CFormView::OnInitialUpdate();
  56. CreateDataSheet(0);
  57. MoveWindow(0,0,640,480);
  58. GetParentFrame()->RecalcLayout();
  59. //ResizeParentToFit();
  60. }
  61. /////////////////////////////////////////////////////////////////////////////
  62. // CFormviewView printing
  63. BOOL CFormviewView::OnPreparePrinting(CPrintInfo* pInfo)
  64. {
  65. // default preparation
  66. return DoPreparePrinting(pInfo);
  67. }
  68. void CFormviewView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  69. {
  70. // TODO: add extra initialization before printing
  71. }
  72. void CFormviewView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  73. {
  74. // TODO: add cleanup after printing
  75. }
  76. void CFormviewView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
  77. {
  78. // TODO: add customized printing code here
  79. }
  80. /////////////////////////////////////////////////////////////////////////////
  81. // CFormviewView diagnostics
  82. #ifdef _DEBUG
  83. void CFormviewView::AssertValid() const
  84. {
  85. CFormView::AssertValid();
  86. }
  87. void CFormviewView::Dump(CDumpContext& dc) const
  88. {
  89. CFormView::Dump(dc);
  90. }
  91. CFormviewDoc* CFormviewView::GetDocument() // non-debug version is inline
  92. {
  93. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFormviewDoc)));
  94. return (CFormviewDoc*)m_pDocument;
  95. }
  96. #endif //_DEBUG
  97. /////////////////////////////////////////////////////////////////////////////
  98. // CFormviewView message handlers
  99. //-----------------------------------------------------------------------------/
  100. // NAME: CStatusMgrDlg::DeleteDataSheet()
  101. //
  102. // PURPOSE: Deletes the property sheet object.
  103. //
  104. // PARAMETERS: None
  105. //
  106. // RETURNS: None
  107. //-----------------------------------------------------------------------------/
  108. void CFormviewView::DeleteDataSheet()
  109. {
  110. TRACE("CDlgPHCA::DeleteDataSheet()n");
  111. if (m_pSheet != NULL)
  112. {
  113. delete m_pSheet;
  114. m_pSheet = NULL;
  115. }
  116. }
  117. //-----------------------------------------------------------------------------/
  118. // NAME: CStatusMgrDlg::CreateDataSheet()
  119. //
  120. // PURPOSE: Creates the propertysheet object.
  121. //
  122. // PARAMETERS: int selectedPage The page to set active when the sheet is 
  123. // created.  A page MUST be added to the sheet 
  124. // in the sheet constructor or the program will 
  125. // assert (or crash).
  126. //
  127. // RETURNS: None
  128. //-----------------------------------------------------------------------------/
  129. void CFormviewView::CreateDataSheet(int selectedPage)
  130. {
  131. DeleteDataSheet();
  132. m_pSheet = new CTabDataSheet((UINT)IDD, this, selectedPage);
  133. if (m_pSheet != NULL)
  134. {
  135. CreateDlgSheet(this, m_pSheet);
  136. MoveDlgSheet(this, m_pSheet, IDC_SHEETFRAME);
  137. }
  138. else
  139. {
  140. MessageBeep(0);
  141. }
  142. }
  143. void CFormviewView::OnSize(UINT nType, int cx, int cy) 
  144. {
  145. CFormView::OnSize(nType, cx, cy);
  146. if (m_pSheet)
  147. {
  148. CRect rect;
  149. CWnd* pWndNewArea = GetDlgItem(IDC_SHEETFRAME);
  150. GetClientRect(&rect);
  151. // These values pretty much eliminate the tab border when you turn off 
  152. // the border style for the list control on the IDD_TABPAGE dialog 
  153. // template.  They move the "client" rectangle size out beyond the 
  154. // borders of the window without causing the window itself to generate 
  155. // scrollbars.  This is a good thing because we ony want the scroll 
  156. // bars from the list control anyway.  We could probably do the same 
  157. // thing for tabbed tree form views as well.
  158. rect.top    -= 7;
  159. rect.left   -= 9;
  160. rect.bottom += 10;
  161. rect.right  += 10;
  162. MoveDlgSheet(this, m_pSheet, rect);
  163. }
  164. }