void CColorStatic::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);
//что-то рисую на заднем плане
DrawGradRect(&dc,rect,clLeft,clRight);
//Выбираю цвет текста
::SetTextColor(dc,clText);
HFONT hfontOld;
CFont* pFont = GetFont();
CString m_sTEXT;
GetWindowText(m_sTEXT);
if(pFont)
hfontOld = (HFONT)SelectObject(dc.m_hDC, (HFONT)pFont->m_hObject);
::SetBkMode(dc, TRANSPARENT);
GetClientRect(&rect);
if(m_iAlign == 1) // center
::DrawText(dc, m_sTEXT, -1, &rect, DT_SINGLELINE|DT_VCENTER|DT_CENTER);
else if(m_iAlign == 0) // left
{
rect.left+=m_iLeftSpacing;
::DrawText(dc, m_sTEXT, -1, &rect, DT_SINGLELINE|DT_VCENTER|DT_LEFT);
}
else //right
{
rect.right-=m_iLeftSpacing;
::DrawText(dc, m_sTEXT, -1, &rect, DT_SINGLELINE|DT_VCENTER|DT_RIGHT);
}
if(pFont)
::SelectObject(dc.m_hDC, hfontOld);
}
Перерисовка текста в наследованном CStatic
Код:
Устанавливаю шрифт для того, чтобы писать в контроле через SetFont(&pFont, 1).
Проблема в том, что шрифт при первоначальной загрузке даже при вызове SetFont остается системным. Потом из программы изменяю шрифт, опять через SetFont() - он устанавливается тем, который выбран. Перемещаю окно так, что часть текста невидима, вытаскиваю окно назад, та часть текста, что была невидимой перерисовывается системным шрифтом. Как сделать, чтобы избежать перерисовки системным шрифтом?