enbrowserctrl.cpp

来自「管理项目进度工具的原代码」· C++ 代码 · 共 114 行

CPP
114
字号
// enbrowserctrl.cpp : implementation file
//

#include "stdafx.h"
#include "enbrowserctrl.h"
//fabio_2005
#if _MSC_VER >= 1300
#	include <comdef.h>
#else
#	include <comutil.h>
#endif

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

enum { EBC_NONE, EBC_PRINT, EBC_PRINTPREVIEW };

/////////////////////////////////////////////////////////////////////////////
// CEnBrowserCtrl

CEnBrowserCtrl::CEnBrowserCtrl() : m_nAction(EBC_NONE)
{
}

CEnBrowserCtrl::~CEnBrowserCtrl()
{
}


BEGIN_MESSAGE_MAP(CEnBrowserCtrl, CWebBrowserCtrl)
	//{{AFX_MSG_MAP(CEnBrowserCtrl)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BEGIN_EVENTSINK_MAP(CEnBrowserCtrl, CWebBrowserCtrl)
    //{{AFX_EVENTSINK_MAP(CBrowserDlg)
	//}}AFX_EVENTSINK_MAP
//	ON_EVENT_REFLECT(CWebBrowser, 250 /* BeforeNavigate2 */, OnBeforeNavigate2, VTS_DISPATCH VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PBOOL)
	ON_EVENT_REFLECT(CEnBrowserCtrl, 252 /* NavigateComplete2 */, OnNavigateComplete2, VTS_DISPATCH VTS_PVARIANT)
END_EVENTSINK_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEnBrowserCtrl message handlers

void CEnBrowserCtrl::Print(LPCTSTR szFile)
{
	if (!szFile || !*szFile)
		ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT, NULL, NULL);
//		ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
	else
	{
		COleVariant vFlags(0L), vFrame(""), vData(""), vHeaders("");
			
		// navigate to print file
		m_nAction = EBC_PRINT;
		Navigate(szFile, vFlags, vFrame, vData, vHeaders);
	}
}

void CEnBrowserCtrl::PrintPreview(LPCTSTR szFile)
{
	if (!szFile || !*szFile)
		ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT, NULL, NULL);
//		ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
	else
	{
		COleVariant vFlags(0L), vFrame(""), vData(""), vHeaders("");
			
		// navigate to print file
		m_nAction = EBC_PRINTPREVIEW;
		Navigate(szFile, vFlags, vFrame, vData, vHeaders);
	}
}

void CEnBrowserCtrl::OnNavigateComplete2(LPDISPATCH /*pDisp*/, VARIANT FAR* URL) 
{
	CString sURL;
	_bstr_t sTemp;
	
	sTemp = *URL;
	sURL = CString(LPCTSTR(sTemp));
	
	switch (m_nAction)
	{
	case EBC_PRINT:
		SafeExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT, NULL, NULL);
//		SafeExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
		break;
		
	case EBC_PRINTPREVIEW:
		SafeExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT, NULL, NULL);
//		SafeExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
		break;
	}

	m_nAction = EBC_NONE;
}

BOOL CEnBrowserCtrl::SafeExecWB(long cmdID, long cmdexecopt, VARIANT* pvaIn, VARIANT* pvaOut) 
{
	try
	{
		ExecWB(cmdID, cmdexecopt, pvaIn, pvaOut);
	}
	catch (CException* /*e*/)
	{
		return FALSE;
	}

	return TRUE;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?