MFCIEVW.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:7k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // This is part of the Microsoft Foundation Classes C++ library.
  2. // Copyright (C) 1992-1998 Microsoft Corporation
  3. // All rights reserved.
  4. //
  5. // This source code is only intended as a supplement to the
  6. // Microsoft Foundation Classes Reference and related
  7. // electronic documentation provided with the library.
  8. // See these sources for detailed information regarding the
  9. // Microsoft Foundation Classes product.
  10. //
  11. // mfcieVw.cpp : implementation of the CMfcieView class
  12. //
  13. #include "stdafx.h"
  14. #include "mfcie.h"
  15. #include "MainFrm.h"
  16. #include "mfcieDoc.h"
  17. #include "mfcieVw.h"
  18. #ifdef _DEBUG
  19. #define new DEBUG_NEW
  20. #undef THIS_FILE
  21. static char THIS_FILE[] = __FILE__;
  22. #endif
  23. /////////////////////////////////////////////////////////////////////////////
  24. // CMfcieView
  25. IMPLEMENT_DYNCREATE(CMfcieView, CHtmlView)
  26. BEGIN_MESSAGE_MAP(CMfcieView, CHtmlView)
  27. //{{AFX_MSG_MAP(CMfcieView)
  28. ON_COMMAND(ID_GO_BACK, OnGoBack)
  29. ON_COMMAND(ID_GO_FORWARD, OnGoForward)
  30. ON_COMMAND(ID_GO_SEARCH_THE_WEB, OnGoSearchTheWeb)
  31. ON_COMMAND(ID_GO_START_PAGE, OnGoStartPage)
  32. ON_COMMAND(ID_VIEW_STOP, OnViewStop)
  33. ON_COMMAND(ID_VIEW_REFRESH, OnViewRefresh)
  34. ON_COMMAND(ID_HELP_WEB_TUTORIAL, OnHelpWebTutorial)
  35. ON_COMMAND(ID_HELP_ONLINE_SUPPORT, OnHelpOnlineSupport)
  36. ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_FREE_STUFF, OnHelpMicrosoftOnTheWebFreeStuff)
  37. ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_FREQUENTLY_ASKED_QUESTIONS, OnHelpMicrosoftOnTheWebFrequentlyAskedQuestions)
  38. ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_GET_FASTER_INTERNET_ACCESS, OnHelpMicrosoftOnTheWebGetFasterInternetAccess)
  39. ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_MICROSOFT_HOME_PAGE, OnHelpMicrosoftOnTheWebMicrosoftHomePage)
  40. ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_SEARCH_THE_WEB, OnHelpMicrosoftOnTheWebSearchTheWeb)
  41. ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_SEND_FEEDBACK, OnHelpMicrosoftOnTheWebSendFeedback)
  42. ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_INTERNET_START_PAGE, OnHelpMicrosoftOnTheWebInternetStartPage)
  43. ON_COMMAND(ID_HELP_MICROSOFT_ON_THE_WEB_BEST_OF_THE_WEB, OnHelpMicrosoftOnTheWebBestOfTheWeb)
  44. ON_COMMAND(ID_VIEW_FONTS_LARGEST, OnViewFontsLargest)
  45. ON_COMMAND(ID_VIEW_FONTS_LARGE, OnViewFontsLarge)
  46. ON_COMMAND(ID_VIEW_FONTS_MEDIUM, OnViewFontsMedium)
  47. ON_COMMAND(ID_VIEW_FONTS_SMALL, OnViewFontsSmall)
  48. ON_COMMAND(ID_VIEW_FONTS_SMALLEST, OnViewFontsSmallest)
  49. ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
  50. //}}AFX_MSG_MAP
  51. END_MESSAGE_MAP()
  52. /////////////////////////////////////////////////////////////////////////////
  53. // CMfcieView construction/destruction
  54. CMfcieView::CMfcieView()
  55. {
  56. }
  57. CMfcieView::~CMfcieView()
  58. {
  59. }
  60. BOOL CMfcieView::PreCreateWindow(CREATESTRUCT& cs)
  61. {
  62. cs.lpszClass = AfxRegisterWndClass(0);
  63. return CView::PreCreateWindow(cs);
  64. }
  65. /////////////////////////////////////////////////////////////////////////////
  66. // CMfcieView drawing
  67. void CMfcieView::OnDraw(CDC* pDC)
  68. {
  69. CMfcieDoc* pDoc = GetDocument();
  70. ASSERT_VALID(pDoc);
  71. }
  72. /////////////////////////////////////////////////////////////////////////////
  73. // CMfcieView diagnostics
  74. #ifdef _DEBUG
  75. void CMfcieView::AssertValid() const
  76. {
  77. CView::AssertValid();
  78. }
  79. void CMfcieView::Dump(CDumpContext& dc) const
  80. {
  81. CView::Dump(dc);
  82. }
  83. CMfcieDoc* CMfcieView::GetDocument() // non-debug version is inline
  84. {
  85. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMfcieDoc)));
  86. return (CMfcieDoc*)m_pDocument;
  87. }
  88. #endif //_DEBUG
  89. /////////////////////////////////////////////////////////////////////////////
  90. // CMfcieView message handlers
  91. void CMfcieView::OnTitleChange(LPCTSTR lpszText)
  92. {
  93. // this will change the main frame's title bar
  94. if (m_pDocument != NULL)
  95. m_pDocument->SetTitle(lpszText);
  96. }
  97. void CMfcieView::OnDocumentComplete(LPCTSTR lpszUrl)
  98. {
  99. // make sure the main frame has the new URL.  This call also stops the animation
  100. ((CMainFrame*)GetParentFrame())->SetAddress(lpszUrl);
  101. }
  102. void CMfcieView::OnInitialUpdate()
  103. {
  104. // Go to the home page initially
  105. CHtmlView::OnInitialUpdate();
  106. GoHome();
  107. }
  108. void CMfcieView::OnBeforeNavigate2(LPCTSTR /*lpszURL*/, DWORD /*nFlags*/,
  109. LPCTSTR /*lpszTargetFrameName*/, CByteArray& /*baPostedData*/,
  110. LPCTSTR /*lpszHeaders*/, BOOL* /*pbCancel*/)
  111. {
  112. // start the animation so that is plays while the new page is being loaded
  113. ((CMainFrame*)GetParentFrame())->StartAnimation();
  114. }
  115. // these are all simple one-liners to do simple controlling of the browser
  116. void CMfcieView::OnGoBack()
  117. {
  118. GoBack();
  119. }
  120. void CMfcieView::OnGoForward()
  121. {
  122. GoForward();
  123. }
  124. void CMfcieView::OnGoSearchTheWeb()
  125. {
  126. GoSearch();
  127. }
  128. void CMfcieView::OnGoStartPage()
  129. {
  130. GoHome();
  131. }
  132. void CMfcieView::OnViewStop()
  133. {
  134. Stop();
  135. }
  136. void CMfcieView::OnViewRefresh()
  137. {
  138. Refresh();
  139. }
  140. // these all go to specific web pages, just like Internet Explorer's help menu
  141. void CMfcieView::OnHelpWebTutorial()
  142. {
  143. CString str;
  144. str.LoadString(IDS_WEB_TUTORIAL);
  145. Navigate2(str, 0, NULL);
  146. }
  147. void CMfcieView::OnHelpOnlineSupport()
  148. {
  149. CString str;
  150. str.LoadString(IDS_ONLINE_SUPPORT);
  151. Navigate2(str, 0, NULL);
  152. }
  153. void CMfcieView::OnHelpMicrosoftOnTheWebBestOfTheWeb()
  154. {
  155. CString str;
  156. str.LoadString(IDS_BEST_OF_THE_WEB);
  157. Navigate2(str, 0, NULL);
  158. }
  159. void CMfcieView::OnHelpMicrosoftOnTheWebFreeStuff()
  160. {
  161. CString str;
  162. str.LoadString(IDS_FREE_STUFF);
  163. Navigate2(str, 0, NULL);
  164. }
  165. void CMfcieView::OnHelpMicrosoftOnTheWebFrequentlyAskedQuestions()
  166. {
  167. CString str;
  168. str.LoadString(IDS_FREQUENTLY_ASKED_QUESTIONS);
  169. Navigate2(str, 0, NULL);
  170. }
  171. void CMfcieView::OnHelpMicrosoftOnTheWebGetFasterInternetAccess()
  172. {
  173. CString str;
  174. str.LoadString(IDS_GET_FASTER_INTERNET_ACCESS);
  175. Navigate2(str, 0, NULL);
  176. }
  177. void CMfcieView::OnHelpMicrosoftOnTheWebMicrosoftHomePage()
  178. {
  179. CString str;
  180. str.LoadString(IDS_MICROSOFT_HOME_PAGE);
  181. Navigate2(str, 0, NULL);
  182. }
  183. void CMfcieView::OnHelpMicrosoftOnTheWebSearchTheWeb()
  184. {
  185. CString str;
  186. str.LoadString(IDS_SEARCH_THE_WEB);
  187. Navigate2(str, 0, NULL);
  188. }
  189. void CMfcieView::OnHelpMicrosoftOnTheWebSendFeedback()
  190. {
  191. CString str;
  192. str.LoadString(IDS_SEND_FEEDBACK);
  193. Navigate2(str, 0, NULL);
  194. }
  195. void CMfcieView::OnHelpMicrosoftOnTheWebInternetStartPage()
  196. {
  197. CString str;
  198. str.LoadString(IDS_INTERNET_START_PAGE);
  199. Navigate2(str, 0, NULL);
  200. }
  201. // these functions control the font size.  There is no explicit command in the
  202. // CHtmlView class to do this, but we can do it by using the ExecWB() function.
  203. void CMfcieView::OnViewFontsLargest()
  204. {
  205. COleVariant vaZoomFactor(4l);
  206. ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,
  207.    &vaZoomFactor, NULL);
  208. }
  209. void CMfcieView::OnViewFontsLarge()
  210. {
  211. COleVariant vaZoomFactor(3l);
  212. ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,
  213.    &vaZoomFactor, NULL);
  214. }
  215. void CMfcieView::OnViewFontsMedium()
  216. {
  217. COleVariant vaZoomFactor(2l);
  218. ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,
  219.    &vaZoomFactor, NULL);
  220. }
  221. void CMfcieView::OnViewFontsSmall()
  222. {
  223. COleVariant vaZoomFactor(1l);
  224. ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,
  225.    &vaZoomFactor, NULL);
  226. }
  227. void CMfcieView::OnViewFontsSmallest()
  228. {
  229. COleVariant vaZoomFactor(0l);
  230. ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,
  231.    &vaZoomFactor, NULL);
  232. }
  233. // This demonstrates how we can use the Navigate2() function to load local files
  234. // including local HTML pages, GIFs, AIFF files, etc.
  235. void CMfcieView::OnFileOpen()
  236. {
  237. CString str;
  238. str.LoadString(IDS_FILETYPES);
  239. CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, str);
  240. if(fileDlg.DoModal() == IDOK)
  241. Navigate2(fileDlg.GetPathName(), 0, NULL);
  242. }