📄 iecomctrlsink.h
字号:
#pragma once
#include <exdisp.h> //For IWebBrowser2* and others
#include <exdispid.h>
#include "Officectrl.h"
// CIEComCtrlSink command target
class CIEComCtrlSink : public CCmdTarget
{
DECLARE_DYNAMIC(CIEComCtrlSink)
public:
CIEComCtrlSink();
virtual ~CIEComCtrlSink();
public:
// 控制Office相关程序资源的插入的对象
static COfficeCtrl officeCtrl;
protected:
//欲监听的 IWebBrowser2控件接口指针
IWebBrowser2* m_pWebBrowser2;
// IE 应用程序指针
IWebBrowserApp* m_pIEApp;
// IE 应用程序Window窗口句柄
CWnd m_wndWebBrowser;
//监听事件的连接点Cookie值,以便建立和取消连接
DWORD m_dwCookie;
// counter to monitor number of requests to BeforeNavigate2 vs number of requests to DownloadBegin.
// member variables to remember the information we get from BeforeNavigate2
// but we don't get from DownloadBegin (Refresh) call.
CString m_strUrl;
CString m_strHeaders;
CString m_strPostData;
// methods
public:
BOOL bSinking;//标识是否正在监听一个IE对象。
//通过调用以下函数,打开一个IE, 开始连接该IE的 DWebBrowserEvents2 事件
BOOL MyAdviseSink();
protected:
// 停止监听 DWebBrowserEvents2 事件
BOOL UnAdviseSink();
// 装载一个指定的Web页面
BOOL Navigate2(CString strURL);
//当监听的IE对象转到一个新的URL之前,调用以下函数
afx_msg void BeforeNavigate2(LPDISPATCH pDisp, VARIANT FAR *url, VARIANT FAR *Flags, VARIANT FAR *TargetFrameName, VARIANT FAR *PostData, VARIANT FAR *Headers, VARIANT_BOOL* Cancel);
//当监听的IE对象"准备就绪"(READYSTATE_COMPLETE)后,调用以下函数
afx_msg void DocumentComplete(IDispatch *pDisp,VARIANT *URL);
//当监听的IE对象开始下载数据之前,调用以下函数
afx_msg void DownloadBegin();
//当监听的IE对象开始下载数据完成后,调用以下函数
afx_msg void DownloadEnd();
// 当IE浏览器退出时取消事件监听
afx_msg void OnQuit();
protected:
DECLARE_MESSAGE_MAP()
DECLARE_DISPATCH_MAP()//声明Dispatch Map表
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -