首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

双缓存绘图有关问题

2012-07-02 
双缓存绘图问题小弟学了点Qt,由于不支持emf图片显示,只好调用win32 api。但是出现了闪烁问题,求各位MFC大神

双缓存绘图问题
小弟学了点Qt,由于不支持emf图片显示,只好调用win32 api。但是出现了闪烁问题,求各位MFC大神指点哪里出了问题,代码编译通过,但是什么都没画出来。
  HDC MemDC; // 定义一个内存显示设备对象
  rect1.setRect(0,0,width(),height());
  HWND hwnd = this->winId();//在Qt中得到窗口句柄
  HDC hdc = GetDC(hwnd);
  MemDC = CreateCompatibleDC(hdc);
  HBITMAP__* bmp = CreateCompatibleBitmap(MemDC,width(),height());
  SelectObject(MemDC,&bmp);
  HBRUSH hBrush = CreateSolidBrush(RGB(255,255,255));
  SelectObject(MemDC, hBrush);
  Rectangle(MemDC,0,0,width(),height());
  PlayEnhMetaFile(MemDC,(HENHMETAFILE__*)h_emf,(RECT*)&rect1);
  BitBlt(hdc,0,0,width(),height(),MemDC,0,0,SRCCOPY);  
  DeleteDC(MemDC);
  DeleteObject(hBrush);
请各位帮看看是不是双缓存过程的哪里出了逻辑错误,多写啦

[解决办法]
HBITMAP__* bmp = CreateCompatibleBitmap(MemDC,width(),height());

MemDC,width(),height() 这些参数是啥啊

参考下
CRect wndRect;
this->GetClientRect(wndRect);
memDC.CreateCompatibleDC(&dc);
memBmp.CreateCompatibleBitmap(&dc, wndRect.Width(), wndRect.Height());
CBitmap* pOldBmp = memDC.SelectObject(&memBmp);

热点排行