使用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()。