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

📄 atlcontrolsubwin.h

📁 用VC开发activex 一书实例1 ATLControl
💻 H
字号:
// ATLControlSubWin.h : Declaration of the CATLControlSubWin

#ifndef __ATLCONTROLSUBWIN_H_
#define __ATLCONTROLSUBWIN_H_

#include "resource.h"       // main symbols


/////////////////////////////////////////////////////////////////////////////
// CATLControlSubWin
class ATL_NO_VTABLE CATLControlSubWin : 
	public CComObjectRootEx<CComObjectThreadModel>,
	public CComCoClass<CATLControlSubWin, &CLSID_ATLControlSubWin>,
	public CComControl<CATLControlSubWin>,
	public IDispatchImpl<IATLControlSubWin, &IID_IATLControlSubWin, &LIBID_ATLCONTROLLib>,
	public IProvideClassInfo2Impl<&CLSID_ATLControlSubWin, NULL, &LIBID_ATLCONTROLLib>,
	public IPersistStreamInitImpl<CATLControlSubWin>,
	public IPersistStorageImpl<CATLControlSubWin>,
	public IQuickActivateImpl<CATLControlSubWin>,
	public IOleControlImpl<CATLControlSubWin>,
	public IOleObjectImpl<CATLControlSubWin>,
	public IOleInPlaceActiveObjectImpl<CATLControlSubWin>,
	public IViewObjectExImpl<CATLControlSubWin>,
	public IOleInPlaceObjectWindowlessImpl<CATLControlSubWin>,
	public IDataObjectImpl<CATLControlSubWin>,
	public ISupportErrorInfo,
	public IConnectionPointContainerImpl<CATLControlSubWin>,
	public ISpecifyPropertyPagesImpl<CATLControlSubWin>
{
public:
	CContainedWindow m_ctlButton;
	

	CATLControlSubWin() :	
		m_ctlButton(_T("Button"), this, 1)
	{
		m_bWindowOnly = TRUE; 
	}

DECLARE_REGISTRY_RESOURCEID(IDR_ATLCONTROLSUBWIN)

BEGIN_COM_MAP(CATLControlSubWin)
	COM_INTERFACE_ENTRY(IATLControlSubWin)
	COM_INTERFACE_ENTRY(IDispatch)
	COM_INTERFACE_ENTRY_IMPL(IViewObjectEx)
	COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject2, IViewObjectEx)
	COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject, IViewObjectEx)
	COM_INTERFACE_ENTRY_IMPL(IOleInPlaceObjectWindowless)
	COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleInPlaceObject, IOleInPlaceObjectWindowless)
	COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleWindow, IOleInPlaceObjectWindowless)
	COM_INTERFACE_ENTRY_IMPL(IOleInPlaceActiveObject)
	COM_INTERFACE_ENTRY_IMPL(IOleControl)
	COM_INTERFACE_ENTRY_IMPL(IOleObject)
	COM_INTERFACE_ENTRY_IMPL(IQuickActivate)
	COM_INTERFACE_ENTRY_IMPL(IPersistStorage)
	COM_INTERFACE_ENTRY_IMPL(IPersistStreamInit)
	COM_INTERFACE_ENTRY_IMPL(ISpecifyPropertyPages)
	COM_INTERFACE_ENTRY_IMPL(IDataObject)
	COM_INTERFACE_ENTRY(IProvideClassInfo)
	COM_INTERFACE_ENTRY(IProvideClassInfo2)
	COM_INTERFACE_ENTRY(ISupportErrorInfo)
	COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
END_COM_MAP()

BEGIN_PROPERTY_MAP(CATLControlSubWin)
	// PROP_ENTRY("Description", dispid, clsid)
	PROP_PAGE(CLSID_CColorPropPage)
END_PROPERTY_MAP()


BEGIN_CONNECTION_POINT_MAP(CATLControlSubWin)
END_CONNECTION_POINT_MAP()


BEGIN_MSG_MAP(CATLControlSubWin)
	MESSAGE_HANDLER(WM_PAINT, OnPaint)
	MESSAGE_HANDLER(WM_GETDLGCODE, OnGetDlgCode)
	MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
	MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus)
	MESSAGE_HANDLER(WM_CREATE, OnCreate)
ALT_MSG_MAP(1)
	// Replace this with message map entries for subclassed Button
END_MSG_MAP()

	LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
	{
		RECT rc;
		GetWindowRect(&rc);
		rc.right -= rc.left;
		rc.bottom -= rc.top;
		rc.top = rc.left = 0;
		m_ctlButton.Create(m_hWnd, rc);
		return 0;
	}
	STDMETHOD(SetObjectRects)(LPCRECT prcPos,LPCRECT prcClip)
	{
		IOleInPlaceObjectWindowlessImpl<CATLControlSubWin>::SetObjectRects(prcPos, prcClip);
		int cx, cy;
		cx = prcPos->right - prcPos->left;
		cy = prcPos->bottom - prcPos->top;
		::SetWindowPos(m_ctlButton.m_hWnd, NULL, 0,
			0, cx, cy, SWP_NOZORDER | SWP_NOACTIVATE);
		return S_OK;
	}

// ISupportsErrorInfo
	STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);

// IViewObjectEx
	STDMETHOD(GetViewStatus)(DWORD* pdwStatus)
	{
		ATLTRACE(_T("IViewObjectExImpl::GetViewStatus\n"));
		*pdwStatus = VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE;
		return S_OK;
	}

// IATLControlSubWin
public:
	HRESULT OnDraw(ATL_DRAWINFO& di);

};

#endif //__ATLCONTROLSUBWIN_H_

⌨️ 快捷键说明

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