⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdhtml.h

📁 不好意思
💻 H
字号:
// CDHTML.h : Declaration of the CCDHTML
#pragma once
#include "resource.h"       // main symbols
#include <atlctl.h>
[
	object, 
	dual,
	uuid(9F3E85AE-09C6-4A3A-A78C-6973F8A328B6),
	helpstring("ICDHTMLUI Interface"),
	pointer_default(unique)
]
__interface ICDHTMLUI : IDispatch
{
	// Example method that will be called by the HTML
	[id(1)] HRESULT OnClick([in]IDispatch* pdispBody, [in]VARIANT varColor);
};
[
	coclass,
	threading("apartment"),
	version(1.0),
	uuid("72DB36B5-154C-427E-9BB0-AAF3C496B6EC"),
	noncreatable
]
class ATL_NO_VTABLE CCDHTMLUI :
	public ICDHTMLUI
{
public:
	DECLARE_PROTECT_FINAL_CONSTRUCT()

	HRESULT FinalConstruct()
	{
		return S_OK;
	}
	
	void FinalRelease() 
	{
	}

	// Example method called by the HTML to change the <BODY> background color
	STDMETHOD(OnClick)(IDispatch* pdispBody, VARIANT varColor)
	{
		CComQIPtr<IHTMLBodyElement> spBody(pdispBody);
		if (spBody != NULL)
			spBody->put_bgColor(varColor);
		return S_OK;
	}
};


// ICDHTML
[
	object,
	uuid(C0771F2F-6285-48EA-9356-8AA2A4D8C47D),
	dual,
	helpstring("ICDHTML Interface"),
	pointer_default(unique)
]
__interface ICDHTML : public IDispatch
{
};


// CCDHTML
[
	coclass,
	threading("apartment"),
	vi_progid("Ex29c.CDHTML"),
	progid("Ex29c.CDHTML.1"),
	version(1.0),
	uuid("E672F808-00BC-46AD-9970-8DB5585EAA1E"),
	helpstring("CDHTML Class"),
	support_error_info(ICDHTML),
	registration_script("control.rgs")
]
class ATL_NO_VTABLE CCDHTML : 
	public ICDHTML,
	public IPersistStreamInitImpl<CCDHTML>,
	public IOleControlImpl<CCDHTML>,
	public IOleObjectImpl<CCDHTML>,
	public IOleInPlaceActiveObjectImpl<CCDHTML>,
	public IViewObjectExImpl<CCDHTML>,
	public IOleInPlaceObjectWindowlessImpl<CCDHTML>,
	public IPersistStorageImpl<CCDHTML>,
	public ISpecifyPropertyPagesImpl<CCDHTML>,
	public IQuickActivateImpl<CCDHTML>,
	public IDataObjectImpl<CCDHTML>,
	public IProvideClassInfo2Impl<&__uuidof(CCDHTML), NULL>,
	public CComControl<CCDHTML>
{
public:

	CCDHTML()
	{
		m_bWindowOnly = TRUE;
	}

DECLARE_OLEMISC_STATUS(OLEMISC_RECOMPOSEONRESIZE | 
	OLEMISC_CANTLINKINSIDE | 
	OLEMISC_INSIDEOUT | 
	OLEMISC_ACTIVATEWHENVISIBLE | 
	OLEMISC_SETCLIENTSITEFIRST
)


BEGIN_PROP_MAP(CCDHTML)
	PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
	PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
	// Example entries
	// PROP_ENTRY("Property Description", dispid, clsid)
	// PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()


BEGIN_MSG_MAP(CCDHTML)
	MESSAGE_HANDLER(WM_CREATE, OnCreate)
	CHAIN_MSG_MAP(CComControl<CCDHTML>)
	DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
// Handler prototypes:
//  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
//  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
//  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);

// IViewObjectEx
	DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)

// ICDHTML

	LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
	{
		CAxWindow wnd(m_hWnd);
		wnd.ModifyStyle(0, WS_HSCROLL | WS_VSCROLL);
		HRESULT hr = wnd.CreateControl(IDH_CDHTML);
		if (SUCCEEDED(hr))
		{
			CComObject<CCDHTMLUI> *pObject = NULL;
			hr = CComObject<CCDHTMLUI>::CreateInstance(&pObject);
			if (SUCCEEDED(hr) && pObject != NULL)
				hr = wnd.SetExternalDispatch(static_cast<ICDHTMLUI*>(pObject));
		}
		if (SUCCEEDED(hr))
			hr = wnd.QueryControl(IID_IWebBrowser2, (void**)&m_spBrowser);
		return SUCCEEDED(hr) ? 0 : -1;
	}

	STDMETHOD(TranslateAccelerator)(LPMSG pMsg)
	{
		CComPtr<IOleInPlaceActiveObject> spIOleInPlaceActiveObject;
		
		HRESULT hr = m_spBrowser->QueryInterface(&spIOleInPlaceActiveObject);
		if (SUCCEEDED(hr))
			hr = spIOleInPlaceActiveObject->TranslateAccelerator(pMsg);
		if (hr != S_OK)
			hr = IOleInPlaceActiveObjectImpl<CCDHTML>::TranslateAccelerator(pMsg);

		return hr;
	}
	CComPtr<IWebBrowser2> m_spBrowser;

	DECLARE_PROTECT_FINAL_CONSTRUCT()

	HRESULT FinalConstruct()
	{
		return S_OK;
	}
	
	void FinalRelease() 
	{
	}
};

⌨️ 快捷键说明

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