Растровое изображение MFC с использованием преобразования CPaintDC?

#visual-c

#visual-c

Вопрос:

Пытаюсь преобразовать это:

 HDC hdc = CreateCompatibleDC(NULL);
HBITMAP cross = (HBITMAP)LoadImage(NULL, _("c:\captureqwsx.bmp") ,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
SelectObject(hdc, cross);
HDC hdc_x = ::GetDC(HWND_DESKTOP);
::BitBlt(hdc_x,10,10,200,200,hdc,0,0,SRCCOPY);  
::ReleaseDC(HWND_DESKTOP,hdc_x);
  

Для этого используется CDC / DC???????????

 CPaintDC dc(this);
CDC dcMem;

dc.CreateCompatibleDC(amp;dcMem);
HBITMAP cross = (HBITMAP)LoadImage(NULL, _T("c:\captureqwsx.bmp") ,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
dc.SelectObject(cross);
dc.BitBlt(10,10,200,200,amp;dcMem,0,0,SRCCOPY);
dc.ReleaseOutputDC();
  

это прерывает выполнение

Ответ №1:

Вы перепутали свои контроллеры домена. CPaintDC создается автоматически для работы с вашим окном, нет необходимости использовать CreateCompatibleDC для него — это должно быть сделано в вашем dcMem. Кроме того, вы не можете использовать CPaintDC, кроме как в обработчике сообщений WM_PAINT, вместо этого вы должны использовать CClientDC.

Могут быть и другие проблемы с опубликованным вами кодом, но это должно помочь вам начать.