调用CBitmap::FromHandle返回的CBitmap* 可以保存后反复使用吗?比如:
调用CBitmap::FromHandle返回的CBitmap* 可以保存以后反复使用吗?比如:
void CMyDlg::OnDisplayBmp()
{
......
CPaintDC dc(m_pBmpWnd);//另一个问题:为什么用CPaintDC和CClientDC定义这个dc都可以?
HBITMAP hbm=CreateDIBitmap(dc.m_hDC, lpbmih, CBM_INIT, lpbInit, lpbmi,
DIB_RGB_COLORS);
m_pBitmap=CBitmap::FromHandle(hbm);//保存经由CBitmap::FromHandle调用返回的m_pBitmap
......
}
void CMyDlg::OnPaint()
{
.....
if(m_pBitmap)
{
CPaintDC dc(m_pBmpWnd);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap* pOldBitmap = dcMem.SelectObject(m_pBitmap);//使用原先保存的m_pBitmap
dc.SetStretchBltMode(COLORONCOLOR);
dc.StretchBlt(m_BmpX,m_BmpY,m_BmpWndWidth,m_BmpWndHeight,
&dcMem,0,0,m_BmpWidth,m_BmpHeight,SRCCOPY);
dcMem.SelectObject(pOldBitmap);
}
CDialog::OnPaint();
......
}
我按上述代码写了程序试验没有发现有问题,但msdn上说象这样这种情况
CBitmap::FromHandle()返回的是一个临时CBitmap对象的指针,mfc framework会在空
闲处理函数onidle时自动释放这样的临时变量。如果按照msdn上所说,应该是无法显示
位图,但我试验了上述代码的确可以正常工作,请教前辈这是为什么呢?
void CMyDlg::OnDisplayBmp()
{
......
CPaintDC dc(m_pBmpWnd);//另一个问题:为什么用CPaintDC和CClientDC定义这个dc都可以?
HBITMAP hbm=CreateDIBitmap(dc.m_hDC, lpbmih, CBM_INIT, lpbInit, lpbmi,
DIB_RGB_COLORS);
m_pBitmap=CBitmap::FromHandle(hbm);//保存经由CBitmap::FromHandle调用返回的m_pBitmap
......
}
void CMyDlg::OnPaint()
{
.....
if(m_pBitmap)
{
CPaintDC dc(m_pBmpWnd);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap* pOldBitmap = dcMem.SelectObject(m_pBitmap);//使用原先保存的m_pBitmap
dc.SetStretchBltMode(COLORONCOLOR);
dc.StretchBlt(m_BmpX,m_BmpY,m_BmpWndWidth,m_BmpWndHeight,
&dcMem,0,0,m_BmpWidth,m_BmpHeight,SRCCOPY);
dcMem.SelectObject(pOldBitmap);
}
CDialog::OnPaint();
......
}
我按上述代码写了程序试验没有发现有问题,但msdn上说象这样这种情况
CBitmap::FromHandle()返回的是一个临时CBitmap对象的指针,mfc framework会在空
闲处理函数onidle时自动释放这样的临时变量。如果按照msdn上所说,应该是无法显示
位图,但我试验了上述代码的确可以正常工作,请教前辈这是为什么呢?
...全文
相关推荐
Visual C++程序开发
Visual C++程序开发Visual C++程序开发 Visual C++程序开发
MFC 位图动画
演示如何使用MFC设置位图动画,并且消除频闪。大家可以参考一下。位图资源没有上传,你可以自己添加。
栅格图像叠加透明显示MFC
详细描述了如何进行图像叠加,并包含源代码,经本人测试,完全可用。
double buffering
mfc double buffering tech. reduce screen flicker.
引用 MFC GDI双缓冲避免图形闪烁
多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈我的一些观点。 1


图形处理/算法
