【MFC】关于 OnPaint 里面使用双缓冲绘图 依然不停闪烁

XM3990205HZ2552 XM3990205HZ2552 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码如下:

void CdlgPlayerWnds::OnPaint()
{
CPaintDC dc(this);

RECT rect;
SetParent(CWnd::FromHandle(m_hwndOld));
GetParent()->GetClientRect(&rect);//获取窗口大小信息

CDC mdc,bufdc;
HBITMAP bmp;
mdc.CreateCompatibleDC(&dc);
bufdc.CreateCompatibleDC(&dc);
bmp=CreateCompatibleBitmap(dc.GetSafeHdc(),rect.right,rect.bottom);

mdc.SelectObject(&bmp);
m_hBmpNoVedio=(HBITMAP)LoadImage(NULL,"./res/nobmp.bmp",IMAGE_BITMAP,900,600,LR_LOADFROMFILE);//从文件导入位图

BITMAP bmInfo;
GetObject(m_hBmpNoVedio,sizeof(BITMAP),(LPBYTE)&bmInfo); //得到图片尺寸

bufdc.SelectObject(&m_hBmpNoVedio);
mdc.StretchBlt(0,0,rect.right,rect.bottom,&bufdc,0,0,bmInfo.bmWidth,bmInfo.bmHeight,SRCCOPY);
dc.BitBlt(0,0,rect.right,rect.bottom,&bufdc,0,0,SRCCOPY);
}

程序执行后窗口里面的背景图不停得闪烁,是因为以上代码的原因?还是因为这个OnPaint函数在一个死循环中?
...全文
评论 9
收藏 已收藏
分享
返回顶部
XM3990205HZ2552
界面 15,976 成员 115,866 内容