读书人

如何复制一个位图句柄

发布时间: 2012-10-14 14:55:07 作者: rapoo

怎么复制一个位图句柄?

C/C++ code
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是需要一直不存而且不能改变的位图句柄
但是上面那样做了之后,这个句柄指向的图会改变
有没有办法复制一下这个句柄啊?
谢谢啦

[解决办法]
HBITMAP a = b
b是原来的句柄

我没试过 感觉应该可以
[解决办法]
C/C++ code
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;}
[解决办法]
直接用API命令CopyImage不就可以了吗?你们怎么越搞越复杂了....







[解决办法]
句柄无所谓复制不复制的,关键是你要复制出来一张位图。

读书人网 >VC/MFC

热点推荐