HDC in anderen HDC kopieren - wieso geht code nicht?



  • Hallo!
    Wieso malt mir dieser Code einfach einen schwarzen Bereich auf meine Anwendung?

    HDC test;
    	HBITMAP htest;
    	BITMAP btest;
        CPaintDC dc(this); // device context for painting
    
    	test = CreateCompatibleDC(dc);
    
    	TextOut(test, 0, 0, "test", 20);
    
    	htest = CreateCompatibleBitmap(test, GetDeviceCaps(test, HORZRES), 
            GetDeviceCaps(test, VERTRES));
    
    	SelectObject(test, htest);
    
    	GetObject(htest, sizeof(BITMAP), &btest);
    
    	BitBlt(dc, 0, 0, btest.bmWidth, btest.bmHeight, test, 0, 0, SRCCOPY);
    

    Danke!



  • Hi!

    Ich hab den Code in eine Dialogbasierende Anwendung eingebaut aber bei mir ist überhaupt nichts passiert.



  • Probiere mal so:

    CRect Rect; GetClientRect(Rect);
    CPaintDC* pDC = new CPaintDC(this);
    CDC MemDC; MemDC.CreateCompatibleDC(pDC);
    CBitmap Bitmap; Bitmap.CreateCompatibleBitmap(pDC,Rect.Width(),Rect.Height());
    
    MemDC.SelectObject(&Bitmap), MemDC.BitBlt(Rect.left,Rect.top,Rect.right,Rect.bottom,pDC,0,0,SRCCOPY);
    MemDC.TextOut(5,5,CString("Hello World!")), pDC->BitBlt(Rect.left,Rect.top,Rect.right,Rect.bottom,&MemDC,0,0,SRCCOPY);
    
    MemDC.DeleteDC(), Bitmap.DeleteObject(); delete pDC;
    

Anmelden zum Antworten