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

搜索引擎

开发平台:

Visual C++

  1. // SpiderView.cpp : implementation of the CSpiderView class
  2. //
  3. #include "stdafx.h"
  4. #include "Spider.h"
  5. #include "ThreadParams.h"
  6. #include "SpiderDoc.h"
  7. #include "SpiderView.h"
  8. #include "utily.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CSpiderView
  16. IMPLEMENT_DYNCREATE(CSpiderView, CEditView)
  17. BEGIN_MESSAGE_MAP(CSpiderView, CEditView)
  18. //{{AFX_MSG_MAP(CSpiderView)
  19. ON_COMMAND(ID_TOOLS_SHOWURLS, OnToolsShowurls)
  20. ON_COMMAND(ID_TOOLS_STRIPHTML, OnToolsStripHTML)
  21. ON_COMMAND(ID_TOOLS_STRIPTEXT, OnToolsStripText)
  22. ON_COMMAND(ID_TOOLS_EMAILADDRESS, OnToolsEmailAddress)
  23. //}}AFX_MSG_MAP
  24. // Standard printing commands
  25. ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)
  26. ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint)
  27. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview)
  28. ON_MESSAGE(WM_USER_CHECK_DONE,OnUpDateURL)
  29. END_MESSAGE_MAP()
  30. /////////////////////////////////////////////////////////////////////////////
  31. // CSpiderView construction/destruction
  32. CSpiderView::CSpiderView()
  33. {
  34. }
  35. CSpiderView::~CSpiderView()
  36. {
  37. }
  38. BOOL CSpiderView::PreCreateWindow(CREATESTRUCT& cs)
  39. {
  40. // TODO: Modify the Window class or styles here by modifying
  41. //  the CREATESTRUCT cs
  42. BOOL bPreCreated = CEditView::PreCreateWindow(cs);
  43. cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL); // Enable word-wrapping
  44. return bPreCreated;
  45. }
  46. /////////////////////////////////////////////////////////////////////////////
  47. // CSpiderView drawing
  48. void CSpiderView::OnDraw(CDC* pDC)
  49. {
  50. CSpiderDoc* pDoc = GetDocument();
  51. ASSERT_VALID(pDoc);
  52. // TODO: add draw code for native data here
  53. }
  54. /////////////////////////////////////////////////////////////////////////////
  55. // CSpiderView printing
  56. BOOL CSpiderView::OnPreparePrinting(CPrintInfo* pInfo)
  57. {
  58. // default CEditView preparation
  59. return CEditView::OnPreparePrinting(pInfo);
  60. }
  61. void CSpiderView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
  62. {
  63. // Default CEditView begin printing.
  64. CEditView::OnBeginPrinting(pDC, pInfo);
  65. }
  66. void CSpiderView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
  67. {
  68. // Default CEditView end printing
  69. CEditView::OnEndPrinting(pDC, pInfo);
  70. }
  71. /////////////////////////////////////////////////////////////////////////////
  72. // CSpiderView diagnostics
  73. #ifdef _DEBUG
  74. void CSpiderView::AssertValid() const
  75. {
  76. CEditView::AssertValid();
  77. }
  78. void CSpiderView::Dump(CDumpContext& dc) const
  79. {
  80. CEditView::Dump(dc);
  81. }
  82. CSpiderDoc* CSpiderView::GetDocument() // non-debug version is inline
  83. {
  84. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSpiderDoc)));
  85. return (CSpiderDoc*)m_pDocument;
  86. }
  87. #endif //_DEBUG
  88. /////////////////////////////////////////////////////////////////////////////
  89. // CSpiderView message handlers
  90. CSpiderView * CSpiderView::GetView()
  91. {
  92.   
  93. CMDIChildWnd * pChild =
  94.           ((CMDIFrameWnd*)(AfxGetApp()->m_pMainWnd))->MDIGetActive();
  95.  
  96.       if ( !pChild )
  97.      return NULL;
  98.  
  99.       CView * pView = pChild->GetActiveView();
  100.  
  101.       if ( !pView )   return NULL;
  102.  
  103.       // Fail if view is of wrong kind
  104.       if ( ! pView->IsKindOf( RUNTIME_CLASS(CSpiderView) ) )
  105.   return NULL;
  106.  
  107.       return (CSpiderView *) pView;
  108.    }
  109. void CSpiderView::OnToolsShowurls() 
  110. {
  111. CStringList list;
  112. BOOL found=FALSE;
  113. LPCTSTR lpszText = LockBuffer();
  114. ASSERT(lpszText != NULL);
  115. UINT nLen = GetBufferLength();
  116. TRY
  117. {
  118. found= GetHref(lpszText,_T("href"),list);
  119. }
  120. CATCH_ALL(e)
  121. {
  122. UnlockBuffer();
  123. THROW_LAST();
  124. }
  125. END_CATCH_ALL
  126. UnlockBuffer();
  127. int count = list.GetCount();
  128. POSITION pos=NULL;
  129. CString str, rString="";
  130. if(found==TRUE && count>0)
  131. {
  132. for(int i=0; i<count; i++)
  133. {
  134. if( ( pos = list.FindIndex( i)) != NULL )
  135. {
  136. str = list.GetAt( pos );
  137. rString +=str;
  138. rString += "rn";
  139. }
  140. }
  141. GetEditCtrl().SetSel(0, -1);
  142. GetEditCtrl ().ReplaceSel( rString, TRUE );
  143. }
  144. }
  145. void CSpiderView::OnToolsStripHTML() 
  146. {
  147. CStringList list;
  148. BOOL found=FALSE;
  149. LPCTSTR lpszText = LockBuffer();
  150. ASSERT(lpszText != NULL);
  151. UINT nLen = GetBufferLength();
  152. TRY
  153. {
  154. found= GetHTMLText(lpszText,list);
  155. }
  156. CATCH_ALL(e)
  157. {
  158. UnlockBuffer();
  159. THROW_LAST();
  160. }
  161. END_CATCH_ALL
  162. UnlockBuffer();
  163. int count = list.GetCount();
  164. POSITION pos=NULL;
  165. CString str, rString="";
  166. if(found==TRUE && count>0)
  167. {
  168. for(int i=0; i<count; i++)
  169. {
  170. if( ( pos = list.FindIndex( i)) != NULL )
  171. {
  172. str = list.GetAt( pos );
  173. rString +=str;
  174. rString += "rn";
  175. }
  176. }
  177. GetEditCtrl().SetSel(0, -1);
  178. GetEditCtrl ().ReplaceSel( rString, TRUE );
  179. }
  180. }
  181. void CSpiderView::OnToolsStripText() 
  182. {
  183. CStringList list;
  184. BOOL found=FALSE;
  185. LPCTSTR lpszText = LockBuffer();
  186. ASSERT(lpszText != NULL);
  187. UINT nLen = GetBufferLength();
  188. TRY
  189. {
  190. found= GetHTMLTags(lpszText,list);
  191. }
  192. CATCH_ALL(e)
  193. {
  194. UnlockBuffer();
  195. THROW_LAST();
  196. }
  197. END_CATCH_ALL
  198. UnlockBuffer();
  199. int count = list.GetCount();
  200. POSITION pos=NULL;
  201. CString str, rString="";
  202. if(found==TRUE && count>0)
  203. {
  204. for(int i=0; i<count; i++)
  205. {
  206. if( ( pos = list.FindIndex( i)) != NULL )
  207. {
  208. str = list.GetAt( pos );
  209. rString +=str;
  210. rString += "rn";
  211. }
  212. }
  213. GetEditCtrl().SetSel(0, -1);
  214. GetEditCtrl ().ReplaceSel( rString, TRUE );
  215. }
  216. }
  217. void CSpiderView::OnToolsEmailAddress() 
  218. {
  219. CStringList list;
  220. BOOL found=FALSE;
  221. LPCTSTR lpszText = LockBuffer();
  222. ASSERT(lpszText != NULL);
  223. UINT nLen = GetBufferLength();
  224. TRY
  225. {
  226. found= GetEmail(lpszText,_T("href"),list);
  227. }
  228. CATCH_ALL(e)
  229. {
  230. UnlockBuffer();
  231. THROW_LAST();
  232. }
  233. END_CATCH_ALL
  234. UnlockBuffer();
  235. int count = list.GetCount();
  236. POSITION pos=NULL;
  237. CString str, rString="";
  238. if(found==TRUE && count>0)
  239. {
  240. for(int i=0; i<count; i++)
  241. {
  242. if( ( pos = list.FindIndex( i)) != NULL )
  243. {
  244. str = list.GetAt( pos );
  245. rString +=str;
  246. rString += "rn";
  247. }
  248. }
  249. GetEditCtrl().SetSel(0, -1);
  250. GetEditCtrl ().ReplaceSel( rString, TRUE );
  251. }
  252. }
  253. BOOL CSpiderView::UpdateString (LPCTSTR lpString)
  254. {
  255. CString rString;
  256. rString.Format("%s",lpString);
  257. rString +="rn";
  258. GetEditCtrl ().ReplaceSel( rString, TRUE );
  259. return TRUE;
  260. }
  261. LRESULT CSpiderView::OnUpDateURL(WPARAM wParam,LPARAM lParam) 
  262. {
  263. LPCSTR prtline;;
  264. prtline = (LPCSTR)lParam;
  265. UpdateString(prtline);
  266. return 0;
  267. }