绘制标题栏解决思路

绘制标题栏
我在单文档窗口中自已绘制了标题栏颜色,程序开始运行并没有出现我绘制的效果,在窗口移动或失去焦点后效果才出现,要如何改写程序,请大家指点。

------解决方案--------------------
给个例子
LRESULT CTestColorDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT lrst=CDialog::DefWindowProc(message, wParam, lParam);

if (!::IsWindow(m_hWnd))
return lrst;

if (message==WM_MOVE||message==WM_PAINT||message==WM_NCPAINT||message==WM_NCACTIVATE ||message == WM_NOTIFY)
{
CDC* pWinDC = GetWindowDC();
if (pWinDC)
DrawTitleBar(pWinDC);
ReleaseDC(pWinDC);
}
return lrst;
}

void CTestColorDlg::DrawTitleBar(CDC *pDC)
{
if (m_hWnd)
{
CBrush Brush(RGB(0,100,255));
CBrush* pOldBrush = pDC-> SelectObject(&Brush);

CRect rtWnd, rect;
GetWindowRect(&rtWnd);
//取得标题栏的位置
rect.left = GetSystemMetrics(SM_CXFRAME);
rect.top = GetSystemMetrics(SM_CYFRAME);
rect.right = rtWnd.right - rtWnd.left - GetSystemMetrics(SM_CXFRAME);
rect.bottom = rect.top + GetSystemMetrics(SM_CYSIZE);
int i;
RECT r;
r.top=rect.top;
r.left=rect.left;
r.right=rect.right;
r.bottom=rect.top+1;
double h=128.0/rect.Height();
int k=int(rect.Height()/2);
for(i=0;i <k;i++)
{
r.top++;
r.bottom++;
pDC-> FillSolidRect(&r,RGB(127+int(i*h),127+int(i*h),127));
}
for(i=k;i <rect.Height()-1;i++)
{
r.top++;
r.bottom++;
pDC-> FillSolidRect(&r,RGB(127+int((2*k-i)*h),127+int((2*k-i)*h),127));
}

}
}