使用SendMessage() 方法時(shí)候發(fā)現(xiàn)程序字體總是不能達(dá)到想要的效果,嘗試有Setfont() 去完成時(shí)候卻可以實(shí)現(xiàn):
// global define
CFont ResultFont;
ResultFont.CreateFont(
50,
0,
0,
0,
FW_NORMAL,
FALSE,
FALSE,
0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH | FF_SWISS,
_T("Arial") );
(CStatic*)this->GetDlgItem(IDC_STATIC_FONT)->SetFont(&ResultFont,TRUE); //正常工作
//::SendMessage(::GetDlgItem(this->m_hWnd,IDC_STATIC_FONT),WM_SETFONT,(WPARAM)(&ResultFont),MAKELPARAM(TRUE,0)); 不正常
SendDlgItemMessage(IDC_STATIC_FONT,WM_SETFONT,(WPARAM)(&ResultFont)->GetSafeHandle(),MAKELPARAM(TRUE,0)); 正常
SendMessage(
(HWND) hWnd, // handle to destination window
WM_SETFONT, // message to send
(WPARAM) wParam, // handle to font
(LPARAM) lParam // redraw option
);
MSDN 里面SendMessage() 里面使用WM_SETFONT參數(shù) wParam 必須使用自己定義的FONT的句柄,而不是使用 FONT 定義的內(nèi)容。所以錯(cuò)誤發(fā)生在:
(WPARAM)(&ResultFont) 而應(yīng)該使用 (WPARAM)(&ResultFont)->GetSafeHandle()。