Респект!
Вобщем, с текстом можно так, насколько я понял:
Код:
void CTextWnd::OnPaint()
{
CPaintDC dc(this);
dc.SetTextColor(clrText);
dc.SetBkColor(::GetSysColor(COLOR_WINDOW));
CRect rect;
GetClientRect(rect);
dc.DrawText(_TEXT("Обработка WM_PAINT"), -1, rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
Вот. Что касается нетекстовых элементов, то, видимо нужно использовать memory bitmaps (как-то

). То есть можно и без этого, но если графики много, всё же оно целесообразно.
Насчёт пунктиров, так функция CreatePen не умеет рисовать пунктиры шире одного пикселя, вроде-бы ExtCreatePen умеет или используй "GDI Plus"
Странно, вроде если брать CreatePen, то можно пользоваться либо PS_SOLID, либо PS_DASH.
Или я тут что-то напутал с CreatePen и ExtCreatePen.
P.S. Половину дня убил на поиски ресурсов по теме.
Нашёл вот
эту статью -- вполне информативно!
Ладно, я ещё покопаюсь. Надеюсь, всё же озарение будет

-- тогда обязательно отпишусь!