满载了对话框的OnEraseBkgnd,ShowWindow时闪烁
重载了对话框的OnEraseBkgnd,ShowWindow时闪烁
BOOL CWndDetial::OnEraseBkgnd(CDC* pDC)
{
//return CDialog::OnEraseBkgnd(pDC);
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDC MemDC;
CBitmap MemBmp;
CRect rcClient;
GetClientRect(&rcClient);
CSize WndAbsSize(rcClient.Width()+1,rcClient.Height()+1);
MemDC.CreateCompatibleDC(pDC);
MemBmp.CreateCompatibleBitmap(pDC,WndAbsSize.cx,WndAbsSize.cy);
MemDC.SelectObject(&MemBmp);
CBrush bsBkGnd(RGB(100,100,100));
rcClient.InflateRect(0,1,0,1);
MemDC.FillRect(&rcClient,&bsBkGnd);
pDC->BitBlt(0,0,WndAbsSize.cx,WndAbsSize.cy,&MemDC,0,0,SRCCOPY);
return TRUE;
}
创建的是非模太对话框,然后每次ShowWindow时要闪一下,但第一次时没有,不明白,请高手指点
------解决思路----------------------
BOOL CWndDetial::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
------解决思路----------------------
你做的是
CBrush bsBkGnd(RGB(100,100,100));
与灰色没什么差异
BOOL CWndDetial::OnEraseBkgnd(CDC* pDC)
{
//return CDialog::OnEraseBkgnd(pDC);
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDC MemDC;
CBitmap MemBmp;
CRect rcClient;
GetClientRect(&rcClient);
CSize WndAbsSize(rcClient.Width()+1,rcClient.Height()+1);
MemDC.CreateCompatibleDC(pDC);
MemBmp.CreateCompatibleBitmap(pDC,WndAbsSize.cx,WndAbsSize.cy);
MemDC.SelectObject(&MemBmp);
CBrush bsBkGnd(RGB(100,100,100));
rcClient.InflateRect(0,1,0,1);
MemDC.FillRect(&rcClient,&bsBkGnd);
pDC->BitBlt(0,0,WndAbsSize.cx,WndAbsSize.cy,&MemDC,0,0,SRCCOPY);
return TRUE;
}
创建的是非模太对话框,然后每次ShowWindow时要闪一下,但第一次时没有,不明白,请高手指点
------解决思路----------------------
BOOL CWndDetial::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
------解决思路----------------------
你做的是
CBrush bsBkGnd(RGB(100,100,100));
与灰色没什么差异