问个刷新的小疑点
问个刷新的小问题
初学MFC,在做双缓冲。
我新建了SDI。然后VIEW定义了
CDC *mdc1;
CBitmap *bitmap;
在VIEW的构造函数中
mdc1 = new CDC;
bitmap=new CBitmap;
bitmap-> m_hObject= (HBITMAP)::LoadImage(NULL, "bground.bmp ",
IMAGE_BITMAP,400,400,LR_LOADFROMFILE);
最后在VIEW的OnDraw(CDC* pDC)中
mdc1-> CreateCompatibleDC(pDC);
mdc1-> SelectObject(bitmap);
pDC-> BitBlt(0,0,400,400,mdc1,0,0,SRCCOPY);
其实也就是个想了解缓冲。自己想的例子。想开始加载图片。然后移动窗口的时候图片不闪烁,现在是程序运行开始能显示图片。一刷新就死。
请教回答。谢谢!
------解决方案--------------------
mdc1-> CreateCompatibleDC(pDC);
CBitmap *oldmap=mdc1-> SelectObject(bitmap);
pDC-> BitBlt(0,0,400,400,mdc1,0,0,SRCCOPY);
mdc1-> SelectObject(oldmap);
mdc1-> DeleteDC();
------解决方案--------------------
结合livedeal(怀念) 的两个回帖即可:
然后再创建一个内存DC和内存位图,这才叫“双缓冲”,像你这样子只是“单缓冲”,纯粹是绘制位图,不能解决闪烁问题。
初学MFC,在做双缓冲。
我新建了SDI。然后VIEW定义了
CDC *mdc1;
CBitmap *bitmap;
在VIEW的构造函数中
mdc1 = new CDC;
bitmap=new CBitmap;
bitmap-> m_hObject= (HBITMAP)::LoadImage(NULL, "bground.bmp ",
IMAGE_BITMAP,400,400,LR_LOADFROMFILE);
最后在VIEW的OnDraw(CDC* pDC)中
mdc1-> CreateCompatibleDC(pDC);
mdc1-> SelectObject(bitmap);
pDC-> BitBlt(0,0,400,400,mdc1,0,0,SRCCOPY);
其实也就是个想了解缓冲。自己想的例子。想开始加载图片。然后移动窗口的时候图片不闪烁,现在是程序运行开始能显示图片。一刷新就死。
请教回答。谢谢!
------解决方案--------------------
mdc1-> CreateCompatibleDC(pDC);
CBitmap *oldmap=mdc1-> SelectObject(bitmap);
pDC-> BitBlt(0,0,400,400,mdc1,0,0,SRCCOPY);
mdc1-> SelectObject(oldmap);
mdc1-> DeleteDC();
------解决方案--------------------
结合livedeal(怀念) 的两个回帖即可:
然后再创建一个内存DC和内存位图,这才叫“双缓冲”,像你这样子只是“单缓冲”,纯粹是绘制位图,不能解决闪烁问题。