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

对话框与窗口

开发平台:

Visual C++

  1. // GUI_OutlookView.cpp : implementation of the CGUI_OutlookView class
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "GUI_Outlook.h"
  22. #include "GUI_OutlookDoc.h"
  23. #include "GUI_OutlookView.h"
  24. #ifdef _DEBUG
  25. #define new DEBUG_NEW
  26. #undef THIS_FILE
  27. static char THIS_FILE[] = __FILE__;
  28. #endif
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CGUI_OutlookView
  31. IMPLEMENT_DYNCREATE(CGUI_OutlookView, CXTListView)
  32. BEGIN_MESSAGE_MAP(CGUI_OutlookView, CXTListView)
  33. //{{AFX_MSG_MAP(CGUI_OutlookView)
  34. ON_WM_CREATE()
  35. //}}AFX_MSG_MAP
  36. // Standard printing commands
  37. ON_COMMAND(ID_FILE_PRINT, CXTListView::OnFilePrint)
  38. ON_COMMAND(ID_FILE_PRINT_DIRECT, CXTListView::OnFilePrint)
  39. END_MESSAGE_MAP()
  40. /////////////////////////////////////////////////////////////////////////////
  41. // CGUI_OutlookView construction/destruction
  42. CGUI_OutlookView::CGUI_OutlookView()
  43. {
  44. // TODO: add construction code here
  45. }
  46. CGUI_OutlookView::~CGUI_OutlookView()
  47. {
  48. }
  49. BOOL CGUI_OutlookView::PreCreateWindow(CREATESTRUCT& cs)
  50. {
  51. // TODO: Modify the Window class or styles here by modifying
  52. //  the CREATESTRUCT cs
  53. cs.style |= LVS_REPORT;
  54. return CXTListView::PreCreateWindow(cs);
  55. }
  56. /////////////////////////////////////////////////////////////////////////////
  57. // CGUI_OutlookView drawing
  58. void CGUI_OutlookView::OnDraw(CDC* /*pDC*/)
  59. {
  60. }
  61. /////////////////////////////////////////////////////////////////////////////
  62. // CGUI_OutlookView printing
  63. BOOL CGUI_OutlookView::OnPreparePrinting(CPrintInfo* pInfo)
  64. {
  65. // default preparation
  66. return DoPreparePrinting(pInfo);
  67. }
  68. void CGUI_OutlookView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  69. {
  70. // TODO: add extra initialization before printing
  71. }
  72. void CGUI_OutlookView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  73. {
  74. // TODO: add cleanup after printing
  75. }
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CGUI_OutlookView diagnostics
  78. #ifdef _DEBUG
  79. void CGUI_OutlookView::AssertValid() const
  80. {
  81. CXTListView::AssertValid();
  82. }
  83. void CGUI_OutlookView::Dump(CDumpContext& dc) const
  84. {
  85. CXTListView::Dump(dc);
  86. }
  87. CGUI_OutlookDoc* CGUI_OutlookView::GetDocument() // non-debug version is inline
  88. {
  89. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CGUI_OutlookDoc)));
  90. return (CGUI_OutlookDoc*)m_pDocument;
  91. }
  92. #endif //_DEBUG
  93. /////////////////////////////////////////////////////////////////////////////
  94. // CGUI_OutlookView message handlers
  95. static int arHeaderBmps[] = {
  96. IDB_HEADER_1,
  97. IDB_HEADER_3
  98. };
  99. static int arColWidths[] = {
  100. 24,
  101. 21,
  102. 100,
  103. 180,
  104. 120
  105. };
  106. static CString arColLabels[] = {
  107. _T(" "),
  108. _T(" "),
  109. _T("From"),
  110. _T("Subject"),
  111. _T("Received")
  112. };
  113. int CGUI_OutlookView::OnCreate(LPCREATESTRUCT lpCreateStruct)
  114. {
  115. if (CXTListView::OnCreate(lpCreateStruct) == -1)
  116. return -1;
  117. // Create the image list.
  118. if (!m_imageList.Create(IDB_ENV, 14, 1, RGB(0xFF,0x00,0xFF)))
  119. return -1;
  120. InitializeHeaderControl();
  121. InitializeListControl();
  122. m_flatHeader.SetTheme(0);
  123. SetExtendedStyle (LVS_EX_FULLROWSELECT);
  124. SetMinimumColSize(15);
  125. return 0;
  126. }
  127. bool CGUI_OutlookView::SortList(int /*nCol*/, bool /*bAscending*/)
  128. {
  129. CXTSortClass csc (&GetListCtrl(), m_nSortedCol);
  130. csc.Sort (m_bAscending, xtSortString);
  131. return true;
  132. }
  133. void CGUI_OutlookView::InitializeHeaderControl()
  134. {
  135. // Insert the columns.
  136. BuildColumns(_countof(arColWidths), arColWidths, arColLabels);
  137. // Subclass the flat header control.
  138. SubclassHeader();
  139. // add images to the header columns.
  140. int nCol;
  141. for (nCol = 0; nCol < _countof(arHeaderBmps); ++nCol) {
  142. m_flatHeader.SetBitmap(nCol, arHeaderBmps[nCol]/*, HDF_STRING*/);
  143. }
  144. // use sort arrows.
  145. m_flatHeader.ShowSortArrow(TRUE);
  146. }
  147. void CGUI_OutlookView::InitializeListControl()
  148. {
  149. // build a date string to insert into the list control.
  150. CTime tm = CTime::GetCurrentTime();
  151. CString strDay[] = { _T("Sun"),_T("Mon"),_T("Tue"),_T("Wed"),_T("Thr"),_T("Fri"),_T("Sat") };
  152. CString strTime;
  153. strTime.Format(_T("%s %d/%d/%d"), strDay[tm.GetDayOfWeek()-1],
  154. tm.GetMonth(), tm.GetDay(), tm.GetYear());
  155. // set the image list for the list control.
  156. CListCtrl& rList = GetListCtrl();
  157. rList.SetImageList(&m_imageList, LVSIL_SMALL);
  158. // insert the first item.
  159. rList.InsertItem(0, NULL, 0);
  160. rList.SetItemText(0, 2, _T("Codejock Software"));
  161. rList.SetItemText(0, 3, _T("Xtreme Toolkit has arrived!"));
  162. rList.SetItemText(0, 4, strTime);
  163. // inset the second item.
  164. rList.InsertItem(1, NULL, 0);
  165. rList.SetItemText(1, 2, _T("Joe Programmer"));
  166. rList.SetItemText(1, 3, _T("How can I create an Outlook style application?"));
  167. rList.SetItemText(1, 4, strTime);
  168. EnableUserSortColor(true);
  169. // enable autosizing for columns.
  170. m_flatHeader.EnableAutoSize();
  171. // lock the first two colums from sizing operations.
  172. m_flatHeader.FreezeColumn(0);
  173. m_flatHeader.FreezeColumn(1);
  174. }