c ++ - Hvordan tegner du en bitmap til et afsnit af en Picture Control?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at tegne en bitmap i en sektion af en CDC. Jeg læser bmp, BitBlt CDC'en med bitmap-informationen og intet viser sig, det er min kode:


CWnd* pWindow = GetParent()->GetDlgItem(IDC\_DIAGRAM);
CClientDC windowDC(pWindow);
CDC* CDC = windowDC;
// I draw the graph and other objects I need here, everything works perfectly so far

HANDLE hBitMap = ::LoadImage(0, L"Diagram.bmp", IMAGE\_BITMAP, 0, 0, LR\_LOADFROMFILE);
CBitmap bmp;
bmp.Attach((HBITMAP)hBitMap);
// For testing purposes I tried drawing this bmp into a separate picture control with the bmp property turned on and it drew fine, So i know the data is loaded properly.
CDC->SelectObject(bmp);
// start Position = (0,0) , width = 500, height = 500, imageStartPos = (0,0)
CDC->BitBlt(0, 0, 500, 500, &CDC, 0, 0, SRCCOPY);


Efter den følgende kode vises ingenting, hvad jeg forventer er:


 \_\_\_\_\_\_\_\_\_\_\_\_\_
|     |      |
| BMP |      |
|\_\_\_\_\_|      |
|            |
|    CDC     |
|            |
|            |
\_\_\_\_\_\_\_\_\_\_\_\_\_\_


Er der nogen måde at gøre dette på uden at skulle stable billedkontrol oven på hinanden?


rediger: fik det til at fungere, arbejdskoden er:


CDC* CDC = windowDC;
CDC* bmDC;
CClientDC dc(this);
// Load bmp the same way as above
bmDC->SelectObject(bmp);
bmDC->CreateCompatibleDC(&dc);
CDC->BitBlt(0, 0, 500, 500, bmDC, 0, 0, SRCCOPY);

Bedste reference