方法1(从外部设置):
       m_hFont.CreateFont(32, ... , _T("黑体"));
       GetDlgItem(IDC_EDIT1)->SetFont(&m_hFont);
       此方法可行.
方法2(从内部设置):class CColorEdit : public CEdit
{
public:
.....
CColorEdit(void);
~CColorEdit(void);
        afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
.....
};void CColorEdit::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{   RECT  r = lpDrawItemStruct->rcItem;
   CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
   CString  strText;
   CFont  tmpFont;
   tmpFont.CreateFont(32, ....., _T("黑体"));
   CFont *pFont = &tmpFont; 
   CFont *oldFont = pDC->SelectObject(pFont);
   GetWindowText(strText);
   pDC->DrawText(strText, &r, ...);
   pDC->SelectObject(oldFont);   CEdit::OnDrawItem(nIDCtl, lpDrawItemStruct);
}    ////////////////////////    CColorEdit  m_EditCtl;
    
    m_EditCtl对象显增的就是大字体.
    ----->实际上,方法2不行.   
    在 class  CMyBitmapBtn : public CButton,    用DrawItem的方法(LPDRAWITEMSTRUCT lpDrawItemStruct) 
    可以使CMyBitmapBtn 的对象显示大的 Caption.

    这是什么原因呢?

解决方案 »

  1.   

     tmpFont.CreateFont(32, ....., _T("黑体")); 
    确定建立成功了?
      

  2.   

    不知为什么,没进入void CColorEdit::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 这条函数.
      

  3.   

    能够运行到里面去吗? 似乎CEdit是不支持重载“ OnDrawItem”的,也的确没找到类似“BS_OWNERDRAW”的样式
      

  4.   

    想用第二种方法的方式实现Edit 的字体字号, 应如何做呢?
      

  5.   

    重载OnPaint
    代码放里面
    去掉默认的CEdit::OnPaint
    另外使用CPaintDC不过这样自己重绘,光标需计算并重新定位
      

  6.   


    在 方法2(从内部设置)中用 OnPaint, 效果和效率上好像都不如 方法1(从外部设置), 有这种感觉吗?
      

  7.   

    我想不论内部还是外部设置,那个CFont的生命周期都应该与edit控件一致。
      

  8.   


    CFont的生命周期与edit控件一致.