怎么复制一个位图句柄?

疯狂-的-蜗牛 2012-10-10 04:45:15
HBITMAP hOldBmp=(HBITMAP)::SelectObject(m_hMemDC,m_hBrightBmp);
HDC hmMemDC=CreateCompatibleDC(m_hMemDC);
//把没有处理过的位图的一部分贴到mmemDC上
HBITMAP hOldMemBmp=(HBITMAP)::SelectObject(hmMemDC,m_hScreenBmp);
rc=m_rcTrack.m_rect;creen
int nWidth=rc.right-rc.left;
int nHeight=rc.bottom-rc.top;
//复制mmemDC到memDC上
::BitBlt(m_hMemDC,rc.left,rc.top,nWidth,nHeight,hmMemDC,rc.left,rc.top,SRCCOPY);

m_hScreenBmp是需要一直不存而且不能改变的位图句柄
但是上面那样做了之后,这个句柄指向的图会改变
有没有办法复制一下这个句柄啊?
谢谢啦
...全文
205 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂-的-蜗牛 2012-10-11
  • 打赏
  • 举报
回复
谢谢各位大侠,我还是觉得3楼的方法适合我
healer_kx 2012-10-10
  • 打赏
  • 举报
回复
句柄无所谓复制不复制的,关键是你要复制出来一张位图。
邓学彬 2012-10-10
  • 打赏
  • 举报
回复
直接用API命令CopyImage不就可以了吗?你们怎么越搞越复杂了....






pig357 2012-10-10
  • 打赏
  • 举报
回复

HBITMAP CMyFormats::CopyHBitmap(HBITMAP hSourceHbitmap)
{
CDC sourceDC;
CDC destDC;
sourceDC.CreateCompatibleDC(NULL);
destDC.CreateCompatibleDC(NULL);
//The bitmap information.
BITMAP bm = {0};
//Get the bitmap information.
::GetObject(hSourceHbitmap, sizeof(bm), &bm);
// Create a bitmap to hold the result
HBITMAP hbmResult = ::CreateCompatibleBitmap(CClientDC(NULL), bm.bmWidth, bm.bmHeight);

HBITMAP hbmOldSource = (HBITMAP)::SelectObject(sourceDC.m_hDC, hSourceHbitmap);
HBITMAP hbmOldDest = (HBITMAP)::SelectObject(destDC.m_hDC, hbmResult);
destDC.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &sourceDC, 0, 0, SRCCOPY );

// Restore DCs
::SelectObject(sourceDC.m_hDC, hbmOldSource);
::SelectObject(destDC.m_hDC, hbmOldDest);
::DeleteObject(sourceDC.m_hDC);
::DeleteObject(destDC.m_hDC);

return hbmResult;
}
疯狂-的-蜗牛 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
HBITMAP a = b
b是原来的句柄

我没试过 感觉应该可以
[/Quote]
我狂晕,句柄和指针不一样
chb1991123 2012-10-10
  • 打赏
  • 举报
回复
HBITMAP a = b
b是原来的句柄

我没试过 感觉应该可以

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧