MFC 对话框解决拉动窗口屏幕闪动的问题
voidCDisplay::OnPaint(){CPaintDCdc(this);//devicecontextforpainting//TODO:Addyourmess...
void CDisplay::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CBitmap bitmap;//位图对象
BITMAP m_bitmap; //位图结构体 ,放位图的信息,包括大小
bitmap.LoadBitmap(IDB_BITMAP1);//加载位图
bitmap.GetBitmap(&m_bitmap);//把位图的信息放到结构体中
CDC dccompatible; //一个画图对象
dccompatible.CreateCompatibleDC(&dc);//创建兼容DC
dccompatible.SelectObject(&bitmap);
CRect rect;
GetClientRect(&rect); //获得客户区的大小
// pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dccompatible,0,0,SRCCOPY);//1比1的拷贝
dc.StretchBlt(0,0,rect.Width(),rect.Height(),
&dccompatible,0,0,m_bitmap.bmWidth,m_bitmap.bmHeight,SRCCOPY );//随窗口变化而变化
// Do not call CDialog::OnPaint() for painting messages
}
添加这个消息就可以了,把系统生成的返回值注释了,在自己写一个return true; 展开
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CBitmap bitmap;//位图对象
BITMAP m_bitmap; //位图结构体 ,放位图的信息,包括大小
bitmap.LoadBitmap(IDB_BITMAP1);//加载位图
bitmap.GetBitmap(&m_bitmap);//把位图的信息放到结构体中
CDC dccompatible; //一个画图对象
dccompatible.CreateCompatibleDC(&dc);//创建兼容DC
dccompatible.SelectObject(&bitmap);
CRect rect;
GetClientRect(&rect); //获得客户区的大小
// pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dccompatible,0,0,SRCCOPY);//1比1的拷贝
dc.StretchBlt(0,0,rect.Width(),rect.Height(),
&dccompatible,0,0,m_bitmap.bmWidth,m_bitmap.bmHeight,SRCCOPY );//随窗口变化而变化
// Do not call CDialog::OnPaint() for painting messages
}
添加这个消息就可以了,把系统生成的返回值注释了,在自己写一个return true; 展开
2个回答
展开全部
可以考虑添加消息响应WM_ERASEBKGND
然后可以看到
BOOL C×××Dlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
return CDialog::OnEraseBkgnd(pDC);
}
然后把return CDialog::OnEraseBkgnd(pDC);换成return true;(如果true不行,就false,具有哪个忘了)
但是这样有副作用,就是背景没有擦除就在上面绘制。
然后可以看到
BOOL C×××Dlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
return CDialog::OnEraseBkgnd(pDC);
}
然后把return CDialog::OnEraseBkgnd(pDC);换成return true;(如果true不行,就false,具有哪个忘了)
但是这样有副作用,就是背景没有擦除就在上面绘制。
追问
恩,我知道了,我的问题已经解决了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询