HDC in CDC kopieren



  • Hei,
    wie kopiert man doch gleich den Inhalt eines HDCs in ein CDC? Hatte es mit BitBlt vor aber das geht nicht.

    Also?

    Danke,
    Michael



  • Noch schnell zur Erklärung:

    int src_width	=	GetSystemMetrics(SM_CXSCREEN);
    		int src_height	=	GetSystemMetrics(SM_CYSCREEN);
    
    		HWND    hWnd    = ::GetDesktopWindow();
    		HDC     hdc     = ::GetDC(hWnd);
    		HDC     memDC   = ::CreateCompatibleDC(hdc);
    		HBITMAP hbm     = ::CreateCompatibleBitmap(hdc, src_width, src_height);
    		HBITMAP hbmOld  = (HBITMAP)::SelectObject(memDC, hbm);
    
    		BitBlt(dc, 0, 0, src_width, src_height, hdc, 0, 0, SRCCOPY);
    

    Nur das der Inhalt nicht direkt auf dc ausgegeben werden soll, sondern auf das CDC


  • Administrator

    Wie wäre es sinnvollerweise gleich komplett mit MFC:

    CDC* pDC = CWnd::GetDesktopWindow()->GetDC();
    CDC memDC;
    memDC.CreateCompatibleDC(pDC);
    
    CBitmap Bitmap;
    Bitmap.CreateCompatibleBitmap(pDC, src_width, src_height);
    
    CBitmap* pOldBitmap = memDC.SelectObject(&Bitmap);
    
    // Und was auch immer du dann machen willst!
    

    Grüssli



  • VIELEN DANK!

    Habe eine Sekunde bevor du geschrieben hast auch
    src_dc.FromHandle(hdc);
    gefunden, falls es mal wieder jemand braucht.

    Grüße,
    Michael


Anmelden zum Antworten