方法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.
这是什么原因呢?
确定建立成功了?
代码放里面
去掉默认的CEdit::OnPaint
另外使用CPaintDC不过这样自己重绘,光标需计算并重新定位
在 方法2(从内部设置)中用 OnPaint, 效果和效率上好像都不如 方法1(从外部设置), 有这种感觉吗?
CFont的生命周期与edit控件一致.