读书人

双缓存绘图有关问题

发布时间: 2012-07-02 17:46:23 作者: rapoo

双缓存绘图问题
小弟学了点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);

读书人网 >VC/MFC

热点推荐