We help IT Professionals succeed at work.
Get Started

Need some help with rectangle of a bitmap

174 Views
Last Modified: 2020-01-17
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();
 
//=======================================================================================
Comment
Watch Question
CERTIFIED EXPERT
Top Expert 2016
Commented:
This problem has been solved!
Unlock 1 Answer and 5 Comments.
See Answer
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant

An Experts Exchange subscription includes unlimited access to online courses.

Get Started
Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE