troubleshooting Question

Need some help with rectangle of a bitmap

Avatar of Thomas Stockbruegger
Thomas StockbrueggerFlag for Germany asked on
Visual C++.NET* MFCC++
5 Comments1 Solution183 ViewsLast Modified:
Hallo,
I need some help with this code that I found on the web.
The code works fine to do a Hardcopy of the complete screen.

But I would like to make a Hardcopy from a part of the screen, size of a rectangle that I would like to add to the code.
But I do not know how to do this, or to change the code.

Thank you for your help.
Best regards,
Thomas


 
        // get the device context of the screen
          HDC hScreenDC = CreateDC("DISPLAY", NULL, NULL, NULL);    

        // and a device context to put it in
          HDC hMemoryDC = CreateCompatibleDC(hScreenDC);

          int width = GetDeviceCaps(hScreenDC, HORZRES);
          int height = GetDeviceCaps(hScreenDC, VERTRES);

         // maybe worth checking these are positive values
          HBITMAP hBitmap = CreateCompatibleBitmap(hScreenDC, width, height);
      
         // get a new bitmap
          HBITMAP hOldBitmap = (HBITMAP) SelectObject(hMemoryDC, hBitmap);

          BitBlt(hMemoryDC, 0, 0, width, height, hScreenDC, 0, 0, SRCCOPY);
          hBitmap = (HBITMAP) SelectObject(hMemoryDC, hOldBitmap);


         // clean up
          DeleteDC(hMemoryDC);
          DeleteDC(hScreenDC);


        // now your image is held in hBitmap. You can save it or do whatever with it



//=========================== Drucken =================================================
       CDC memDC;
       CBitmap bitmap;

       int maxw = pDC->GetDeviceCaps(HORZRES);
       int maxh = pDC->GetDeviceCaps(VERTRES);
       pInfo->m_rectDraw.SetRect(0,0,maxw,maxh);

      
        if(!bitmap.Attach(hBitmap));
       BITMAP bm;
       bitmap.GetBitmap(&bm);
       BOOL ok= memDC.CreateCompatibleDC(pDC);
       memDC.SelectObject(&bitmap);

   
       //----------------------------- Drucken ----------------------------------------------------------------------------
        pDC->StretchBlt(0,0,6800,4800,&memDC,0,0,bm.bmWidth,bm.bmHeight, SRCCOPY);
     //--------------------------------------------------------------------------------------------------------------------------
 
       memDC.DeleteDC();
       bitmap.DeleteObject();
 
//=======================================================================================
ASKER CERTIFIED SOLUTION
Join our community to see this answer!
Unlock 1 Answer and 5 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 5 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros