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

📄 helperfontproperty.h

📁 vc编写的
💻 H
字号:
/*
 Copyright (c) 1999, kSet Lab 
 Author: Konstantin Bukreev 
 E-mail: konstantin@mail.primorye.ru 

 Created: 15.10.99 20:01:07
 Version: 1.0.0

*/

#ifndef _HelperFontProperty_8c3fe02b_82ee_11d3_9285_0080adb811c5
#define _HelperFontProperty_8c3fe02b_82ee_11d3_9285_0080adb811c5

#if _MSC_VER > 1000 
#pragma once
#endif // _MSC_VER > 1000

#define IMPLEMENT_FONT_PROPERTY(fname, pname, dispid) \
	HRESULT STDMETHODCALLTYPE get_##fname(IFontDisp **pVal) \
	{ \
		ATLTRACE2(atlTraceControls,2,_T("_HelperFontProperty::get_%s\n"), #fname); \
		return _GetFont(m_##pname, pVal); \
	} \
	HRESULT STDMETHODCALLTYPE putref_##fname(IFontDisp *newVal) \
	{ \
		ATLTRACE2(atlTraceControls,2,_T("_HelperFontProperty::putref_%s\n"), #fname); \
		return _PutRefFont(dispid, m_##pname, newVal); \
	} \
	HRESULT STDMETHODCALLTYPE put_##fname(IFontDisp *newVal) \
	{ \
		ATLTRACE2(atlTraceControls,2,_T("_HelperFontProperty::put_%s\n"), #fname); \
		return _PutFont(dispid, m_##pname, newVal); \
	} 

template <class T>
class _HelperFontProperty
{
public:		
	HRESULT _PutFont(DISPID dispidID, CComPtr<IFontDisp>& pFontPtr, IFontDisp *pF)
	{
		T* pT = static_cast<T*>(this);
		if (pT->FireOnRequestEdit(dispidID) == S_FALSE) 
			return S_FALSE;

		pFontPtr = 0;
		if (pF)
		{
			CComQIPtr<IFont, &IID_IFont> p(pF);
			if (p)
			{
				CComPtr<IFont> pFont;
				p->Clone(&pFont);
				if (pFont)
					pFont->QueryInterface(IID_IFontDisp, (void**) &pFontPtr);
			}
		}
		HelperEnd(dispidID);
		return S_OK;
	}
	HRESULT _PutRefFont(DISPID dispidID, CComPtr<IFontDisp>& pFontPtr, IFontDisp *pF)
	{
		T* pT = static_cast<T*>(this);
		if (pT->FireOnRequestEdit(dispidID) == S_FALSE)
			return S_FALSE;

		pFontPtr = pF;
		HelperEnd(dispidID);
		return S_OK;
	}
	HRESULT _GetFont(CComPtr<IFontDisp>& pFontPtr, IFontDisp **pF)
	{
		*pF = pFontPtr;
		if (*pF != 0)
			(*pF)->AddRef();
		return S_OK;
	}

private:
	void HelperEnd (DISPID dispid)
	{
		T* pT = static_cast<T*>(this);
		pT->m_bRequiresSave = TRUE;
		pT->FireOnChanged(dispid);
		pT->FireViewChange();
		pT->SendOnDataChange(NULL);
	}
};

#endif //_HelperFontProperty_8c3fe02b_82ee_11d3_9285_0080adb811c5

⌨️ 快捷键说明

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