28struct TPhDeleteFontHandle
30 void operator()(HFONT h)
33 if ( ::GetObjectType(h) == NULL )
35 ASSERT0(
false,
"~CFontHandle",
"先に HFONTが破棄されてしまっています。" );
37 else if ( ! ::DeleteObject(h) )
39 ASSERT1(
false,
"~CFontHandle",
"HFONT の破棄に失敗しました。\ncode = %d", ::GetLastError() );
119 HFONT f = ::CreateFontIndirect(&attr);
130 bool Set(
const LOGFONT& attr)
132 HFONT f = ::CreateFontIndirect(&attr);
146 bool Set(
const LOGFONT& attr, HDC dc)
155 pt.y = ::GetDeviceCaps(hDC, LOGPIXELSY) * lf.lfHeight;
157 ::DPtoLP(hDC, &pt, 1);
158 POINT ptOrg = { 0, 0 };
159 ::DPtoLP(hDC, &ptOrg, 1);
160 lf.lfHeight = -abs(pt.y - ptOrg.y);
163 ::ReleaseDC(NULL, hDC);
177 bool Set(
int pointSize, LPCTSTR lpszFaceName, HDC dc = NULL)
179 LOGFONT attr = { 0 };
180 attr.lfCharSet = DEFAULT_CHARSET;
182 attr.lfCharSet = SHIFTJIS_CHARSET;
184 attr.lfHeight = pointSize;
185 lstrcpyn(attr.lfFaceName, lpszFaceName, countof(attr.lfFaceName));
186 return Set(attr, dc);
197 bool Set(HWND hWnd,
double mul = 1.0)
199 HFONT h =
reinterpret_cast<HFONT
>(::SendMessage(hWnd, WM_GETFONT, 0, 0));
202 h =
static_cast<HFONT
>(::GetStockObject(DEFAULT_GUI_FONT));
220 attr.lfWeight = FW_BOLD;
240 attr.lfHeight =
static_cast<long>(attr.lfHeight * mul);
241 attr.lfWidth =
static_cast<long>(attr.lfWidth * mul);
257 NONCLIENTMETRICS ncm;
258 VERIFY( ms_GetNonClientMetrics(ncm) );
260 ncm.lfCaptionFont.lfCharSet = SHIFTJIS_CHARSET;
262 return Set(ncm.lfCaptionFont);
273 NONCLIENTMETRICS ncm;
274 VERIFY( ms_GetNonClientMetrics(ncm) );
276 ncm.lfMenuFont.lfCharSet = SHIFTJIS_CHARSET;
278 return Set(ncm.lfMenuFont);
295 HFONT f = ::CreateFontIndirect(&attr);
323 ASSERT(::IsWindow(hWnd));
325 ::SendMessage(hWnd, WM_SETFONT, (WPARAM)f, isRedraw);
338 return ::GetObject(hFont,
sizeof(LOGFONT), &_attr) != 0;
346 static bool ms_GetNonClientMetrics(NONCLIENTMETRICS& _ncm)
348 _ncm.cbSize =
sizeof(NONCLIENTMETRICS);
349 bool r = !! ::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, _ncm.cbSize, &_ncm, 0);
350 #if(WINVER >= 0x0600)
353 _ncm.cbSize -=
sizeof(int);
354 r = !! ::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, _ncm.cbSize, &_ncm, 0);
static bool GetAttributes(LOGFONT &_attr, HFONT hFont)
[取得] 属性取得.
bool SetSystemCaptionFont(void)
[設定] キャプションバーフォント設定.
bool Set(int pointSize, LPCTSTR lpszFaceName, HDC dc=NULL)
[設定] フォント設定.
bool Set(const LOGFONT &attr)
[設定] フォント設定.
CFontHandle(const CFontHandle &other)
コピーコンストラクタ.
void SetToWindow(HWND hWnd, bool isRedraw=true) const
[取得] ウィンドウへ設定.
bool SetClone(HFONT hFont, double mul=1.0)
[設定] フォント設定.
CFontHandle(HFONT hFont)
代入コンストラクタ.
CFontHandle(const LOGFONT &attr)
代入コンストラクタ.
bool Set(const LOGFONT &attr, HDC dc)
[設定] フォント設定.
bool SetAsBold(HFONT hFont)
[設定] フォント設定.
bool GetAttributes(LOGFONT &_attr) const
[取得] 属性取得.
bool SetSystemMenuFont(void)
[設定] メニューフォント設定.
CFontHandle(void)
コンストラクタ.
bool Set(HWND hWnd, double mul=1.0)
[設定] フォント設定.
HFONT Detach(void)
[設定] デタッチ.
CPointerHandleBaseT & operator=(HFONT t)
[代入] 代入.
bool IsNull(void) const
[確認] NULLチェック