我用LOGFONT结构修改控件文本字体、大小、位置,后两者都起作用,唯独字体没有反应,设置什么字体显示出来的都是默认字体。怎么回事啊,请赐教代码如下:
void CNewButton::PreSubclassWindow()
{
ModifyStyle(0, BS_OWNERDRAW);
SetButtonFont(_T("Arial Black") , 17, FW_NORMAL);//调用下面的函数
}void CNewButton::SetButtonFont(const CString& strFont, int nPointSize, int nWeight)
{
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
_tcscpy(lf.lfFaceName, strFont);
lf.lfHeight = nPointSize;
lf.lfWeight = nWeight;
lf.lfEscapement=0;
lf.lfUnderline=FALSE;
lf.lfItalic=FALSE;
lf.lfStrikeOut=FALSE;
lf.lfCharSet = GB2312_CHARSET;
m_fontButton.CreateFontIndirect(&lf);
Invalidate();
}在DrawItem()中调用下面的函数,进行设置
void CNewButton::DrawButtonText(CDC* pDC, CRect rect, int nState)
{
TCHAR strText[MAX_PATH+1];
::GetWindowText(m_hWnd, strText, MAX_PATH); CFont* hOldFont = pDC->SelectObject(&m_fontButton);
CSize szExtent = pDC->GetTextExtent(strText, lstrlen(strText));
int nMode = pDC->SetBkMode(TRANSPARENT);
COLORREF clrTextPre = pDC->SetTextColor(m_clrText);
CPoint pt(rect.CenterPoint().x-szExtent.cx/2.7, rect.CenterPoint().y-szExtent.cy/2);
CSize sizeDown(1, 1);
pt+=m_sizeTextOffset;
pDC->DrawState(pt, szExtent, strText, DSS_NORMAL, TRUE, 0, (HBRUSH)NULL);
pDC->SelectObject(hOldFont);
pDC->SetBkMode(nMode);
pDC->SetTextColor(clrTextPre);
}
void CNewButton::PreSubclassWindow()
{
ModifyStyle(0, BS_OWNERDRAW);
SetButtonFont(_T("Arial Black") , 17, FW_NORMAL);//调用下面的函数
}void CNewButton::SetButtonFont(const CString& strFont, int nPointSize, int nWeight)
{
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
_tcscpy(lf.lfFaceName, strFont);
lf.lfHeight = nPointSize;
lf.lfWeight = nWeight;
lf.lfEscapement=0;
lf.lfUnderline=FALSE;
lf.lfItalic=FALSE;
lf.lfStrikeOut=FALSE;
lf.lfCharSet = GB2312_CHARSET;
m_fontButton.CreateFontIndirect(&lf);
Invalidate();
}在DrawItem()中调用下面的函数,进行设置
void CNewButton::DrawButtonText(CDC* pDC, CRect rect, int nState)
{
TCHAR strText[MAX_PATH+1];
::GetWindowText(m_hWnd, strText, MAX_PATH); CFont* hOldFont = pDC->SelectObject(&m_fontButton);
CSize szExtent = pDC->GetTextExtent(strText, lstrlen(strText));
int nMode = pDC->SetBkMode(TRANSPARENT);
COLORREF clrTextPre = pDC->SetTextColor(m_clrText);
CPoint pt(rect.CenterPoint().x-szExtent.cx/2.7, rect.CenterPoint().y-szExtent.cy/2);
CSize sizeDown(1, 1);
pt+=m_sizeTextOffset;
pDC->DrawState(pt, szExtent, strText, DSS_NORMAL, TRUE, 0, (HBRUSH)NULL);
pDC->SelectObject(hOldFont);
pDC->SetBkMode(nMode);
pDC->SetTextColor(clrTextPre);
}
ISO9241-5, ISO 9241-8, JIS Z 8518
用哪种字符集啊??
你试试其他字体能不能改变, 比如:SetButtonFont(_T("楷体") , 17, FW_NORMAL);