📄 helperfontproperty.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 + -