VC中如何强制让窗口重绘,主要是在响应OnMove时让窗口重绘
我的直接想法是让窗透明,但是控件不要透明.我在WM_CTLCOLOR响应函数中只让对话框背景透明.
HBRUSH CTestMgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_DLG)
{
return (HBRUSH)GetStockObject(NULL_BRUSH);
}// TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
return hbr;
}
但是这个要在窗口重绘时才会得到响应
首先说明:用Invalidate,UpdateWindow,RedrawWindodw,这些函数的一些用法,都不能在OnMove中使对话框背景重绘.
//CDialog::OnPaint();
//CClientDC dc(this);
//Invalidate(FALSE);
//UpdateWindow();
//RedrawWindow(NULL,NULL,RDW_ERASENOW);
// TODO: Add your message handler code here
// HDC hDC=this-> GetDC()->m_hDC;
// LPARAM lParam=0;
//
// lParam=LOWORD(this->m_hWnd);
// lParam+=CTLCOLOR_DLG<<16;
// //::SendMessage(this-> m_hWnd,WM_CTLCOLOR,(WPARAM)hDC,lParam);
//::SendMessage(this->m_hWnd,WM_SHOWWINDOW,SW_HIDE,NULL);
//ShowWindow(SW_HIDE);
//::SendMessage(this->m_hWnd,WM_ACTIVATE,WA_ACTIVE,(LPARAM)this->m_hWnd);
问题: 还有没有其它方法让对话框背景重绘?
请大家帮下,不过还请先试试,能在OnMove时重绘背景再给我说哈,再次谢谢大家......