CWebBrowserDlg.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #pragma once
  2. #include "resource.h"
  3. #include "explorer1.h"
  4. // CWebBrowserDlg 对话框
  5. #define WM_LOADURLMESSAGE WM_USER+100
  6. #define WM_PRINTMESSAGE WM_USER+101
  7. // 打印错误代码
  8. enum ErrorCode {
  9. HTTP_STATUS_BAD_REQUEST=400,
  10. HTTP_STATUS_DENIED=401,
  11. HTTP_STATUS_PAYMENT_REQ=402,
  12. HTTP_STATUS_FORBIDDEN=403,
  13. HTTP_STATUS_NOT_FOUND=404,
  14. HTTP_STATUS_BAD_METHOD=405,
  15. HTTP_STATUS_NONE_ACCEPTABLE=406,
  16. HTTP_STATUS_PROXY_AUTH_REQ=407,
  17. HTTP_STATUS_REQUEST_TIMEOUT=408,
  18. HTTP_STATUS_CONFLICT=409,
  19. HTTP_STATUS_GONE=410,
  20. HTTP_STATUS_LENGTH_REQUIRED=411,
  21. HTTP_STATUS_PRECOND_FAILED=412,
  22. HTTP_STATUS_REQUEST_TOO_LARGE=413,
  23. HTTP_STATUS_URI_TOO_LONG=414,
  24. HTTP_STATUS_UNSUPPORTED_MEDIA=415,
  25. HTTP_STATUS_RETRY_WITH=449,
  26. HTTP_STATUS_SERVER_ERROR=500,
  27. HTTP_STATUS_NOT_SUPPORTED=501,
  28. HTTP_STATUS_BAD_GATEWAY=502,
  29. HTTP_STATUS_SERVICE_UNAVAIL=503,
  30. HTTP_STATUS_GATEWAY_TIMEOUT=504,
  31. HTTP_STATUS_VERSION_NOT_SUP=505,
  32. URL_INET_E_INVALID_URL=0x800C0002L-0x800C0000L,
  33. URL_INET_E_NO_SESSION,
  34. URL_INET_E_CANNOT_CONNECT,
  35. URL_INET_E_RESOURCE_NOT_FOUND,
  36. URL_INET_E_OBJECT_NOT_FOUND,
  37. URL_INET_E_DATA_NOT_AVAILABLE,
  38. URL_INET_E_DOWNLOAD_FAILURE,
  39. URL_INET_E_AUTHENTICATION_REQUIRED,
  40. URL_INET_E_NO_VALID_MEDIA,
  41. URL_INET_E_CONNECTION_TIMEOUT,
  42. URL_INET_E_INVALID_REQUEST,
  43. URL_INET_E_UNKNOWN_PROTOCOL,
  44. URL_INET_E_SECURITY_PROBLEM,
  45. URL_INET_E_CANNOT_LOAD_DATA,
  46. URL_INET_E_CANNOT_INSTANTIATE_OBJECT,
  47. URL_INET_E_REDIRECT_FAILED=0x800C0014L-0x800C0000L,
  48. URL_INET_E_REDIRECT_TO_DIR,
  49. URL_INET_E_CANNOT_LOCK_REQUEST,
  50. URL_INET_E_USE_EXTEND_BINDING,
  51. URL_INET_E_TERMINATED_BIND,
  52. URL_INET_E_INVALID_CERTIFICATE,
  53. URL_INET_E_CODE_DOWNLOAD_DECLINED=0x800C0100L-0x800C0000L,
  54. URL_INET_E_RESULT_DISPATCHED=0x800C0200L-0x800C0000L,
  55. URL_INET_E_CANNOT_REPLACE_SFP_FILE=0x800C0300L-0x800C0000L,
  56. URL_INET_E_CODE_INSTALL_BLOCKED_BY_HASH_POLICY=0x800C0500L-0x800C0000L,
  57. URL_INET_E_CODE_INSTALL_SUPPRESSED=0x800C0400L-0x800C0000L
  58. };
  59. class CWebBrowserDlg : public CDialogEx
  60. {
  61. DECLARE_DYNAMIC(CWebBrowserDlg)
  62. private:
  63. // ActiveX WebBrowser控件
  64. CExplorer1 *m_WebIE;
  65. CPrintHostApi *m_pHost;
  66. IWebPrintCallBack *m_pICallBack;
  67. BOOL bNaviError; // 是否出现导航错误
  68. BOOL bLoadSucc; // 页面是否加载成功
  69. //HANDLE m_hLoadEvent; // 加载页面等待事件
  70. public:
  71. //// 获取Html元素
  72. //void GetHtmlElement(LPDISPATCH pDisp, VARIANT* URL);
  73. DECLARE_EVENTSINK_MAP()
  74. // WebBrowser Navigate失败事件
  75. void NavigateErrorExplorer1(LPDISPATCH pDisp, VARIANT* URL, VARIANT* Frame, VARIANT* StatusCode, BOOL* Cancel);
  76. // WebBrowser成功Navigate并结束事件
  77. void DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL);
  78. public:
  79. CWebBrowserDlg(CWnd* pParent = NULL); // 标准构造函数
  80. CWebBrowserDlg(CPrintHostApi *pHost, IWebPrintCallBack* pICallBack, CWnd* pParent = NULL);
  81. virtual ~CWebBrowserDlg();
  82. // 对话框数据
  83. enum { IDD = IDD_WEBBROWSER_DIALOG };
  84. protected:
  85. virtual BOOL OnInitDialog();
  86. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
  87. DECLARE_MESSAGE_MAP()
  88. protected:
  89. afx_msg LRESULT OnLoadUrlMessage(WPARAM wParam, LPARAM lParam);
  90. afx_msg LRESULT OnPrintMessage(WPARAM wParam, LPARAM lParam);
  91. public:
  92. afx_msg void OnClose();
  93. void BeforeNavigate2Explorer1(LPDISPATCH pDisp, VARIANT* URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers, BOOL* Cancel);
  94. void NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL);
  95. };