MessageRecord.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:7k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // MessageRecord.h: interface for the CMessageRecord class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_MESSAGERECORD_H__AFFF918D_1624_41E5_8902_81B1F0C749BA__INCLUDED_)
  5. #define AFX_MESSAGERECORD_H__AFFF918D_1624_41E5_8902_81B1F0C749BA__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. class CReportSampleView;
  10. //////////////////////////////////////////////////////////////////////////
  11. // Customized record item, used for displaying prices.
  12. class CMessageRecordItemPrice : public CXTPReportRecordItemNumber
  13. {
  14. DECLARE_SERIAL(CMessageRecordItemPrice)
  15. public:
  16. // Constructs record item with the initial decimal price value.
  17. CMessageRecordItemPrice(double dValue = .0);
  18. // Provides custom group captions depending on the price.
  19. virtual CString GetGroupCaption(CXTPReportColumn* pColumn);
  20. // Provides custom group values comparison based on price value, 
  21. // instead of based on captions.
  22. virtual int CompareGroupCaption(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  23. };
  24. //////////////////////////////////////////////////////////////////////////
  25. // Customized record item, used for displaying checkboxes.
  26. class CMessageRecordItemCheck : public CXTPReportRecordItem
  27. {
  28. DECLARE_SERIAL(CMessageRecordItemCheck)
  29. public:
  30. // Constructs record item with the initial checkbox value.
  31. CMessageRecordItemCheck(BOOL bCheck = FALSE);
  32. // Provides custom group captions depending on checkbox value.
  33. // Returns caption string ID to be read from application resources.
  34. virtual int GetGroupCaptionID(CXTPReportColumn* pColumn);
  35. // Provides custom records comparison by this item based on checkbox value, 
  36. // instead of based on captions.
  37. virtual int Compare(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  38. };
  39. //////////////////////////////////////////////////////////////////////////
  40. // Enumerates possible Message Importance values for using by 
  41. // CMessageRecordItemImportance class
  42. typedef enum MESSAGE_IMPORTANCE
  43. {
  44. msgImportanceNormal,
  45. msgImportanceHigh,
  46. msgImportanceLow
  47. };
  48. //////////////////////////////////////////////////////////////////////////
  49. // Customized record item, used for displaying importance icons.
  50. class CMessageRecordItemImportance : public CXTPReportRecordItem
  51. {
  52. DECLARE_SERIAL(CMessageRecordItemImportance)
  53. public:
  54. // Constructs record item with the initial value.
  55. CMessageRecordItemImportance(MESSAGE_IMPORTANCE eImportance = msgImportanceNormal);
  56. virtual void DoPropExchange(CXTPPropExchange* pPX);
  57. protected:
  58. MESSAGE_IMPORTANCE m_eImportance;   // Message importance
  59. };
  60. //////////////////////////////////////////////////////////////////////////
  61. // Customized record item, used for displaying attachments icons.
  62. class CMessageRecordItemAttachment : public CXTPReportRecordItem
  63. {
  64. DECLARE_SERIAL(CMessageRecordItemAttachment)
  65. public:
  66. // Constructs record item with the initial value.
  67. CMessageRecordItemAttachment(BOOL bHasAttachment = FALSE);
  68. virtual void DoPropExchange(CXTPPropExchange* pPX);
  69. protected:
  70. BOOL m_bHasAttachment; // TRUE when message has attachments, FALSE otherwise.
  71. };
  72. //////////////////////////////////////////////////////////////////////////
  73. // Customized record item, used for displaying read/unread icons.
  74. class CMessageRecordItemIcon : public CXTPReportRecordItem
  75. {
  76. DECLARE_SERIAL(CMessageRecordItemIcon)
  77. public:
  78. // Constructs record item with the initial read/unread value.
  79. CMessageRecordItemIcon(BOOL bRead = FALSE);
  80. // Provides custom group captions depending on the read/unread value.
  81. virtual CString GetGroupCaption(CXTPReportColumn* pColumn);
  82. // Provides custom group values comparison based on read/unread value, 
  83. // instead of based on captions.
  84. virtual int CompareGroupCaption(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  85. // Updates record item icon index depending on read/unread value.
  86. void UpdateReadIcon();
  87. // Provides custom records comparison by this item based on read/unread value, 
  88. // instead of based on captions.
  89. int Compare(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  90. virtual void DoPropExchange(CXTPPropExchange* pPX);
  91. public:
  92. BOOL m_bRead; // TRUE for read, FALSE for unread.
  93. };
  94. //////////////////////////////////////////////////////////////////////////
  95. // Customized record Date/Time item.
  96. // Main customization purpose is overriding GetGroupCaptionID and providing
  97. // application-specific caption when Report control data is grouped via this item.
  98. class CMessageRecordItemDate : public CXTPReportRecordItemDateTime
  99. {
  100. DECLARE_SERIAL(CMessageRecordItemDate)
  101. public:
  102. // Construct record item from COleDateTime value.
  103. CMessageRecordItemDate(COleDateTime odtValue = COleDateTime::GetCurrentTime());
  104. // Provides custom group captions depending on the item date value.
  105. virtual int GetGroupCaptionID(CXTPReportColumn* pColumn);
  106. };
  107. //////////////////////////////////////////////////////////////////////////
  108. // This class is your main custom Record class which you'll manipulate with.
  109. // It contains any kind of specific methods like different types of constructors,
  110. // any additional custom data as class members, any data manipulation methods.
  111. class CMessageRecord : public CXTPReportRecord
  112. {
  113. DECLARE_SERIAL(CMessageRecord)
  114. public:
  115. // Construct record object using empty values on each field
  116. CMessageRecord();
  117. // Construct record object from detailed values on each field
  118. CMessageRecord(
  119. MESSAGE_IMPORTANCE eImportance, BOOL bChecked, int  nAttachmentBitmap,
  120. CString strFromName, CString strSubject,
  121. COleDateTime odtSent, int nMessageSize, BOOL bRead,
  122. double dPrice, COleDateTime odtReceived, COleDateTime odtCreated,
  123. CString strConversation, CString strContact, CString strMessage,
  124. CString strCC, CString strCategories, CString strAutoforward,
  125. CString strDoNotAutoarch, CString strDueBy,
  126. CString strPreview
  127. );
  128. // Clean up internal objects
  129. virtual ~CMessageRecord();
  130. // Create record fields using empty values
  131. virtual void CreateItems();
  132. // Set message as read
  133. BOOL SetRead();
  134. // Overridden callback method, where we can customize any drawing item metrics.
  135. virtual void GetItemMetrics(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pItemMetrics);
  136. virtual void DoPropExchange(CXTPPropExchange* pPX);
  137. CMessageRecordItemIcon* m_pItemIcon; // Display read/unread icon.
  138. CMessageRecordItemDate* m_pItemReceived;// Contains message receive time.
  139. CXTPReportRecordItem* m_pItemSize; // Message size. 
  140. // We are storing pointer to this item for further use.
  141. };
  142. #endif // !defined(AFX_MESSAGERECORD_H__AFFF918D_1624_41E5_8902_81B1F0C749BA__INCLUDED_)