SpiderList.cpp
上传用户:st5609838
上传日期:2013-03-29
资源大小:66k
文件大小:5k
源码类别:

搜索引擎

开发平台:

Visual C++

  1. // SpiderList.cpp : implementation of the CSpiderList class
  2. //
  3. #include "stdafx.h"
  4. #include "Spider.h"
  5. #include "ThreadParams.h"
  6. #include "Thread.h"
  7. #include "SpiderDoc.h"
  8. #include "SpiderList.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CSpiderList
  16. IMPLEMENT_DYNCREATE(CSpiderList, CListView)
  17. BEGIN_MESSAGE_MAP(CSpiderList, CListView)
  18. //{{AFX_MSG_MAP(CSpiderList)
  19. // NOTE - the ClassWizard will add and remove mapping macros here.
  20. //    DO NOT EDIT what you see in these blocks of generated code!
  21. //}}AFX_MSG_MAP
  22. // Standard printing commands
  23. ON_COMMAND(ID_FILE_PRINT, CListView::OnFilePrint)
  24. ON_COMMAND(ID_FILE_PRINT_DIRECT, CListView::OnFilePrint)
  25. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CListView::OnFilePrintPreview)
  26. ON_MESSAGE(WM_USER_CHECK_DONE,OnUpDateURL)
  27. END_MESSAGE_MAP()
  28. /////////////////////////////////////////////////////////////////////////////
  29. // CSpiderList construction/destruction
  30. CSpiderList::CSpiderList()
  31. {
  32. }
  33. CSpiderList::~CSpiderList()
  34. {
  35. }
  36. BOOL CSpiderList::PreCreateWindow(CREATESTRUCT& cs)
  37. {
  38. // TODO: Modify the Window class or styles here by modifying
  39. //  the CREATESTRUCT cs
  40. cs.style = (cs.style & ~LVS_TYPEMASK) | LVS_REPORT;
  41. cs.style |= LVS_AUTOARRANGE;
  42. return CListView::PreCreateWindow(cs);
  43. }
  44. /////////////////////////////////////////////////////////////////////////////
  45. // CSpiderList drawing
  46. void CSpiderList::OnDraw(CDC* pDC)
  47. {
  48. CSpiderDoc* pDoc = GetDocument();
  49. ASSERT_VALID(pDoc);
  50. // TODO: add draw code for native data here
  51. }
  52. void CSpiderList::OnInitialUpdate()
  53. {
  54. CListView::OnInitialUpdate();
  55. CListCtrl& listView = GetListCtrl();
  56. listView.SetBkColor( RGB(255,255,255) );  // set bk color to white
  57. }
  58. CSpiderList * CSpiderList::GetView()
  59. {
  60.   
  61. CMDIChildWnd * pChild =
  62.           ((CMDIFrameWnd*)(AfxGetApp()->m_pMainWnd))->MDIGetActive();
  63.  
  64.       if ( !pChild )
  65.      return NULL;
  66.  
  67.       CView * pView = pChild->GetActiveView();
  68.  
  69.       if ( !pView )   return NULL;
  70.  
  71.       // Fail if view is of wrong kind
  72.       if ( ! pView->IsKindOf( RUNTIME_CLASS(CSpiderList) ) )
  73.   return NULL;
  74.  
  75.       return (CSpiderList *) pView;
  76.    }
  77. /////////////////////////////////////////////////////////////////////////////
  78. // CSpiderList printing
  79. BOOL CSpiderList::OnPreparePrinting(CPrintInfo* pInfo)
  80. {
  81. // default preparation
  82. return DoPreparePrinting(pInfo);
  83. }
  84. void CSpiderList::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  85. {
  86. // TODO: add extra initialization before printing
  87. }
  88. void CSpiderList::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  89. {
  90. // TODO: add cleanup after printing
  91. }
  92. /////////////////////////////////////////////////////////////////////////////
  93. // CSpiderList diagnostics
  94. #ifdef _DEBUG
  95. void CSpiderList::AssertValid() const
  96. {
  97. CListView::AssertValid();
  98. }
  99. void CSpiderList::Dump(CDumpContext& dc) const
  100. {
  101. CListView::Dump(dc);
  102. }
  103. CSpiderDoc* CSpiderList::GetDocument() // non-debug version is inline
  104. {
  105. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSpiderDoc)));
  106. return (CSpiderDoc*)m_pDocument;
  107. }
  108. #endif //_DEBUG
  109. /////////////////////////////////////////////////////////////////////////////
  110. // CSpiderList message handlers
  111. BOOL CSpiderList::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
  112. {
  113. BOOL bCreated = CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  114. if ( bCreated )
  115. {
  116. CListCtrl& listView = GetListCtrl();
  117. listView.InsertColumn( 0,_T("URL"), LVCFMT_LEFT,275,0 );
  118. listView.InsertColumn( 1,_T("Status"), LVCFMT_LEFT,150,0 );
  119. listView.InsertColumn( 2,_T("Type"), LVCFMT_LEFT,75, 0 );
  120. listView.InsertColumn( 3,_T("Size"), LVCFMT_LEFT,75, 0 );
  121. listView.InsertColumn( 4,_T("Modified"), LVCFMT_LEFT,200, 0 );
  122. }
  123. return bCreated;
  124. }
  125. LRESULT CSpiderList::OnUpDateURL(WPARAM wParam,LPARAM lParam) 
  126. {
  127. CListCtrl& list = GetListCtrl();
  128. int nListEntries = list.GetItemCount();
  129. PURLStatus newEntry = (PURLStatus) lParam;
  130. if(newEntry->m_URL.IsEmpty()) return 0;
  131. list.InsertItem(nListEntries,newEntry->m_URL);
  132. list.SetItemText(nListEntries,1,newEntry->m_StatusString);
  133. list.SetItemText(nListEntries,2,newEntry->m_ContentType);
  134. list.SetItemText(nListEntries,3,newEntry->m_ContentLength);
  135. list.SetItemText(nListEntries,4,newEntry->m_LastModified);
  136. return 0;
  137. }