Getting owner draw child control to paint when calling SetWindowText
Hi,
I have an owner draw static class. DrawItem is called (and works ok) when
the dialog repaints, i.e. initially and when restored, but my class DrawItem
is not called when SetWindowText is called.
Is there some way to get a dialog to request an owner draw child control to
paint itself other than calling Invalidate() and UpdateWindow() in the
dialog class (which draws all the controls and in my app results in an
endless loop as the static text is changed by a slider control)?
TIA
Jan
Some detail omitted for clarity:
class ColorStatic : public CStatic
{
public:
ColorStatic();
~ColorStatic();
CFont m_TextFont;
COLORREF m_rgbTextColor;
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
protected:
virtual void PreSubclassWindow();
};
void ColorStatic::DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/)
{
CPaintDC dc(this); // lpDrawItemStruct unused so we can call DrawItem
directly if needed
HFONT hOldFont = (HFONT) dc.SelectObject(m_TextFont);
dc.SetMapMode(MM_TEXT);
dc.SetTextAlign(TA_TOP | TA_LEFT);
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(m_rgbTextColor);
CString strText;
GetWindowText(strText);
dc.TabbedTextOut(0, 0, strText, 0, NULL, 0);
dc.SelectObject(hOldFont);
}