如何在VC下实现无闪烁刷屏! 我在单文档视图中画个矩形,用鼠标拖着画,要求一直显示着这个矩形,同时屏幕不闪烁,我在OnMouseMove()里加的pDC->Draw3dRect(rect, 0, 0),画出一串,能不能像有些软件一样,只显示当前的矩形 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你在OnMouseMove还应该刷新包含画出矩形的那部分区域。 两个办法一:用双缓冲二:SetROP2 用双缓冲吧,给个示例代码:void CYourClass::OnDraw(CDC* pDC){////////////////////////////////////////////////////////// // 初始化双缓冲绘图相关变量 CDC memDC; CBitmap memBitmap; memDC.CreateCompatibleDC(pDC); memBitmap.CreateCompatibleBitmap (pDC,BoardWidth,BoardHeight);//BoardWidth,BoardHeight应要变吧,还是动态获取的 CBitmap*pb= memDC.SelectObject(&memBitmap);///////////////////////////////////////////////////////////// 在memDC上画你的画// eg:DrawRect(&memDC);///////////////////////////////////////////////////////////////////往屏幕绘图及清理内存设备资源 pDC->BitBlt(0,0,BoardWidth,BoardWidth,&memDC,0,0,SRCCOPY); memDC.SelectObject(pb); memDC.DeleteDC(); memBitmap.DeleteObject(); } BoardWidth,BoardHeight);//BoardWidth,BoardHeight应要变吧,还是动态获取的不好意思,代码是我以前的工程里拷的,上边的注释是以前的,不要引起你的误解呀..:-) zdl1016(探路者) 的代码已经好详细了,刷新的时候记着InvalidateRect(&rect,FALSE); OnMouseMove()中刷新你要的那部分区域 关于,LPPOINT point;::GetCursorPos(point);HWND hcurrent=::WindowFromPoint(*point); ADO模型中的域对象是什么意思? DrawText的参数设置,让字体自动变大小。 计时器问题,请大家指教 CreateBitmapMask函数的用法 程序移至问题(从98到NT)?(谁能帮忙千分奉上) 求DDB转DIB的API函数 全局键盘钩子取汉字终极大讨论! 关于SQL简单问题 MFC程序运行问题 给俺发个把多个文件复制到剪贴板的代码好吗?谢谢,立刻给分 急求, VC6.0配置GDI+ !!!!!!!!
一:用双缓冲
二:SetROP2
void CYourClass::OnDraw(CDC* pDC)
{
//////////////////////////////////////////////////////////
// 初始化双缓冲绘图相关变量
CDC memDC;
CBitmap memBitmap;
memDC.CreateCompatibleDC(pDC);
memBitmap.CreateCompatibleBitmap (pDC,BoardWidth,BoardHeight);//BoardWidth,BoardHeight应要变吧,还是动态获取的
CBitmap*pb= memDC.SelectObject(&memBitmap);
///////////////////////////////////////////////////////////
// 在memDC上画你的画
// eg:DrawRect(&memDC);/////////////////////////////////////////////////////////////////
//往屏幕绘图及清理内存设备资源
pDC->BitBlt(0,0,BoardWidth,BoardWidth,&memDC,0,0,SRCCOPY);
memDC.SelectObject(pb);
memDC.DeleteDC();
memBitmap.DeleteObject();
}
刷新的时候记着InvalidateRect(&rect,FALSE);