void CMyDlg::OnPaint()
{
CWnd *pWnd = GetDlgItem(IDC_STATIC1);
RECT rect;
pWnd->GetClientRect(&rect);
CDC *pControlDC = pWnd->GetDC();
pWnd->Invalidate();
pWnd->UpdateWindow();
pControlDC->SelectStockObject(BLACK_BRUSH);
pControlDC->Rectangle(rect.left, rect.top, rect.right,rect.bottom);
pWnd->ReleaseDC(pControlDC);
}
pWnd->Invalidate();
pWnd->UpdateWindow();
是不是控件的消息处理函数处理了WM_PAINT消息,而不是主窗口过程?所以就不会引起死循环?
{
CWnd *pWnd = GetDlgItem(IDC_STATIC1);
RECT rect;
pWnd->GetClientRect(&rect);
CDC *pControlDC = pWnd->GetDC();
pWnd->Invalidate();
pWnd->UpdateWindow();
pControlDC->SelectStockObject(BLACK_BRUSH);
pControlDC->Rectangle(rect.left, rect.top, rect.right,rect.bottom);
pWnd->ReleaseDC(pControlDC);
}
pWnd->Invalidate();
pWnd->UpdateWindow();
是不是控件的消息处理函数处理了WM_PAINT消息,而不是主窗口过程?所以就不会引起死循环?
{
CWnd *pWnd = GetDlgItem(IDC_STATIC1); //pWnd是IDC_STATIC1的窗口指针
//他调用Invali..是引起IDC_STATIC1重新绘制,而不是Dlg重新绘制
this->Invalidate();//会死循环