龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC无闪烁刷屏技术的实现(3)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
//CView::OnEraseBkgnd(pDC); CStrucDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CRect rect; GetWindowRect(rect); nWidth = rect.Width(); nHeight= rect.Height(); CDC MemDC; CBitmap MemBitmap; MemDC.Cre

//CView::OnEraseBkgnd(pDC);
CStrucDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect rect;
GetWindowRect(&rect);
nWidth = rect.Width();
nHeight= rect.Height();

CDC MemDC;
CBitmap MemBitmap;

MemDC.CreateCompatibleDC (NULL);
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);

CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));

///////////////////////////////////////////////////////
//// 以上为画背景色 //////////////
//// 以下为画背景图 //////////////
///////////////////////////////////////////////////////
GetClientRect(rect);
BITMAP bm;
CDC dcMem;
VERIFY(m_bmp.GetObject(sizeof(bm),(LPVOID)&bm));
dcMem.CreateCompatibleDC(pDC);
CBitmap *pOldBMP =( CBitmap *)dcMem.SelectObject(&m_bmp);
MemDC.BitBlt( (rect.right - bm.bmWidth)/2,
(rect.bottom - bm.bmHeight)/2,
bm.bmWidth,bm.bmHeight,&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(pOldBMP);
///////////////////////////////////////////////////////
//// 以上为画背景图 //////////////
///////////////////////////////////////////////////////

pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);

MemBitmap.DeleteObject();
MemDC.DeleteDC();

return TRUE;
}
/////////////// 无闪烁背景图绘制 //////////
/////////////////////////////////////////////

  注:程序中m_bmp 为相应 的 StrucView.h中定义,为位图资源类

protected:
CBitmap m_bmp;

  并应加上下面段,当然,你可在任何时候加入loadBitmap 子例程,也可加入文件资源,那由得你了!

CStrucView::CStrucView()
{
VERIFY(m_bmp.LoadBitmap(IDB_BITMAP3));
}

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接