我将尝试编写一个类来包装程序中的位图功能。
其中一个有用的功能是从另一个位图句柄复制位图。但我有些困惑:
其中一个有用的功能是从另一个位图句柄复制位图。但我有些困惑:
void operator=( MyBitmapType & bmp )
{
HDC dcMem;
HDC dcSource;
if( m_hBitmap != bmp.Handle() )
{
if( m_hBitmap )
this->DisposeOf();
// copy the bitmap header from the source bitmap
GetObject( bmp.Handle(), sizeof(BITMAP), (LPVOID)&m_bmpHeader );
// Create a compatible bitmap
dcMem = CreateCompatibleDC( NULL );
m_hBitmap = CreateCompatibleBitmap( dcMem, m_bmpHeader.bmWidth, m_bmpHeader.bmHeight );
// copy bitmap data
BitBlt( dcMem, 0, 0, bmp.Header().bmWidth, bmp.Header().bmHeight, dcSource, 0, 0, SRCCOPY );
}
}
这段代码缺少一件事情:如果我只有源位图的句柄(例如HBITMAP),那么我如何获取到源位图的HDC呢?
你可以看到,在上面的代码中,我在BitBlt()调用中使用了"dcSource"。但是我不知道如何从源位图的句柄中获取到这个dcSource(bmp.Handle()返回源位图的句柄)。