RepElement.cpp
上传用户:jimmy1212
上传日期:2020-11-02
资源大小:40k
文件大小:4k
源码类别:

Static控件

开发平台:

Visual C++

  1. /*******************************************************************************
  2.  * CElement.cpp: implementation of the report item classes.
  3.  *
  4.  * MFC Easy! Report class
  5.  *
  6.  * Written by Vipul Lal <vipul@hotmail.com>
  7.  * Copyright (c) 2000-2002. All Rights Reserved.
  8.  *
  9.  * This code may be used in compiled form in any way you desire. This
  10.  * file may be redistributed unmodified by any means PROVIDING it is 
  11.  * not sold for profit without the authors written consent, and 
  12.  * providing that this notice and the authors name and all copyright 
  13.  * notices remains intact. 
  14.  *
  15.  * An email letting me know how you are using it would be nice too. 
  16.  *
  17.  * This file is provided "as is" with no expressed or implied warranty.
  18.  * The author accepts no liability for any damage/loss of business that
  19.  * this product may cause.
  20.  *
  21.  *******************************************************************************/
  22. #include "stdafx.h"
  23. #include "EasyReport.h"
  24. #include "RepElement.h"
  25. #ifdef _DEBUG
  26. #undef THIS_FILE
  27. static char THIS_FILE[]=__FILE__;
  28. #define new DEBUG_NEW
  29. #endif
  30. //////////////////////////////////////////////////////////////////////
  31. // CElement
  32. //////////////////////////////////////////////////////////////////////
  33. IMPLEMENT_SERIAL( CElement, CObject,1)
  34. void CElement::Serialize(CArchive & ar)
  35. {
  36. if( ar.IsStoring())
  37. ar << m_Frame;
  38. else
  39. ar >> m_Frame;
  40. }
  41. CElement::CElement()
  42. {
  43. m_Frame.SetRect(0,0,0,0);
  44. m_DocPtr = NULL;
  45. }
  46. CElement::CElement(CRect *inFrame)
  47. :m_Frame(inFrame)
  48. {
  49. m_DocPtr = NULL;
  50. }
  51. CElement::~CElement()
  52. {
  53. }
  54. void CElement::Draw(CDC *inDC)
  55. {
  56. ASSERT( m_DocPtr != NULL);
  57. inDC->TextOut(0,0,_T("Must override draw method in derived classes"));
  58. }
  59. //////////////////////////////////////////////////////////////////////
  60. // CTextBox
  61. //////////////////////////////////////////////////////////////////////
  62. IMPLEMENT_SERIAL(CTextBox, CElement,1)
  63. void CTextBox::Serialize(CArchive & ar)
  64. {
  65. if( ar.IsStoring())
  66. {
  67. ar << m_Text;
  68. ar << m_FontIndex;
  69. }
  70. else
  71. {
  72. ar >> m_Text;
  73. ar >> m_FontIndex;
  74. }
  75. }
  76. CTextBox::CTextBox()
  77. {
  78. m_FontIndex = -1;
  79. m_Align = DT_LEFT;
  80. }
  81. CTextBox::~CTextBox()
  82. {
  83. }
  84. void CTextBox::Draw(CDC *inDC)
  85. {
  86. ASSERT( m_DocPtr != NULL);
  87. ASSERT( m_FontIndex != -1);
  88. CRect aTemp(m_Frame);
  89. aTemp.top = -aTemp.top;
  90. aTemp.bottom = -aTemp.bottom;
  91. inDC->SelectObject( (CFont *)m_DocPtr->GetStyle( m_FontIndex) );
  92. //inDC->Rectangle(&aTemp);
  93. inDC->DrawText(m_Text, aTemp, m_Align);
  94. }
  95. //////////////////////////////////////////////////////////////////////
  96. // CPageNum
  97. //////////////////////////////////////////////////////////////////////
  98. IMPLEMENT_SERIAL(CPageNum, CElement,1)
  99. void CPageNum::Serialize(CArchive & ar)
  100. {
  101. }
  102. CPageNum::CPageNum()
  103. {
  104. }
  105. CPageNum::~CPageNum()
  106. {
  107. }
  108. void CPageNum::Draw(CDC *inDC)
  109. {
  110. m_Text.Format("Page: %d of %d",m_DocPtr->GetCurPage()+1, m_DocPtr->GetPageCount());
  111. CTextBox::Draw(inDC);
  112. }
  113. //////////////////////////////////////////////////////////////////////
  114. // CHline
  115. //////////////////////////////////////////////////////////////////////
  116. IMPLEMENT_SERIAL(CHline, CElement,1);
  117. void CHline::Serialize(CArchive & ar)
  118. {
  119. CElement::Serialize(ar);
  120. if( ar.IsStoring())
  121. ar << m_PenStyle;
  122. else
  123. ar >> m_PenStyle;
  124. }
  125. CHline::CHline()
  126. {
  127. m_PenStyle = -1;
  128. }
  129. CHline::~CHline()
  130. {
  131. }
  132. void CHline::Draw(CDC *inDC)
  133. {
  134. ASSERT( m_DocPtr != NULL);
  135. ASSERT( m_PenStyle != -1);
  136. inDC->SelectObject( (CPen *)m_DocPtr->GetPen( m_PenStyle ) );
  137. inDC->MoveTo( m_Frame.left, -m_Frame.top);
  138. inDC->LineTo( m_Frame.right, -m_Frame.top);
  139. }