Как сохранить загруженное растровое изображение при перемещении диалога mf c за пределы экрана в с ++? - PullRequest
0 голосов
/ 14 июля 2020

Я загрузил растровое изображение в элемент управления c в MF C с помощью StrechBlt (). Но когда я переместил диалоговое окно за пределы экрана windows, часть изображения стирается. Кто-нибудь знает, почему это происходит?

Ниже приведен код для загрузки растрового изображения в stati c control:

bool LoadImage(CString path)
{
        HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, path, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
        CBitmap bitmap;
        CDC cdc;
        CClientDC DC(GetDlgItem(IDC_STATIC));
        CStatic* pStaticText = (CStatic*)GetDlgItem(IDC_STATIC);    
        bitmap.Attach((HBITMAP)hBitmap);
        cdc.CreateCompatibleDC(&DC))        
        CBitmap* pBM = cdc.SelectObject(&bitmap);
        BITMAP bitmapObj;
        bitmap.GetBitmap(&bitmapObj);
        CRect rect;
        CWnd *pWnd = GetDlgItem(IDC_STATIC_IMAGE_CAPTURE_AREA);
        pWnd->GetWindowRect(&rect);
        ScreenToClient(&rect);
        DC.StretchBlt(0, 0, rect.Width(), rect.Height(), &cdc, 0, 0, bitmapObj.bmWidth, bitmapObj.bmHeight, SRCCOPY);
        cdc.SelectObject(pBM);
        pStaticText->SetBitmap((HBITMAP)bmp);
        cdc.DeleteDC();
        bitmap.DeleteObject(); 
        return true;
}
...