Re: Как скопировать CBitmap - член моего класса
От: Mort  
Дата: 25.04.07 13:28
Оценка:
Исправлено форматирование текста. — SchweinDeBurg

По найденному материалу сотворил, но вылетает Assertion Debug...:

void CopyBitmap(CBitmap& resbitmap, CBitmap& src_bmp)
{
    CWnd* desctop = CWnd::GetDesktopWindow();
    CDC* desk_dc = desctop->GetDC();
    ASSERT(desk_dc);
    CDC src_dc;
    src_dc.CreateCompatibleDC(desk_dc);
     CBitmap* old_bmp_src = src_dc.SelectObject(&src_bmp);

   BITMAP bmp = { 0 };
    src_bmp.GetObject(sizeof(bmp), &bmp);  // Вот здесь вылетает



    const int width = bmp.bmWidth;
    const int height = bmp.bmHeight;
    
    CDC dest_dc;
    dest_dc.CreateCompatibleDC(desk_dc);
    CBitmap dest_bmp;
    dest_bmp.CreateCompatibleBitmap(desk_dc, height, width);
    CBitmap* old_bmp_dest = dest_dc.SelectObject(&dest_bmp);

    BOOL res = dest_dc.BitBlt(0, 0, width, height, &src_dc, 0, 0, SRCCOPY);
    ASSERT(res);

    src_dc.SelectObject(old_bmp_src);
    dest_dc.SelectObject(old_bmp_dest);

    desctop->ReleaseDC(desk_dc);

    HGDIOBJ old_bmp = resbitmap.Detach();
    DeleteObject(old_bmp);

    resbitmap.Attach(dest_bmp.Detach());
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.