dcsimg

WEBINAR:
On-Demand

Virtual Developer Workshop: Containerized Development with Docker


Environment: MFC, Visual C++ 6.0, Windows 2000

The following code fragment shows how to read an image from a BMP file and display it in your MFC application window. You could see several articles on the same focus; the one I present here is very simple, with just a few lines of code. The code given below has been tested with Visual C++ 6.0 on Win 2000.

Create a single document interface application; select CFormView as the base class for the application's view base class. Click on the resource tab on the project explorer to navigate to the resource editor and drag a button to the dialog resource. Double-click the button to add a handler to the application's view class, as shown below.

void AppView::OnButton1()
{
}

Step 1: Load the Image File

Call the following:

CString szFilename ("C:\\Talla\\yourimg.bmp");
HBITMAP hBmp = (HBITMAP)::LoadImage(
                NULL,
                szFilename,
                IMAGE_BITMAP,
                0,
                0,
                LR_LOADFROMFILE|LR_CREATEDIBSECTION
                );

Step 2: Create a Bitmap Object and Attach It to the Object

CBitmap bmp;
bmp.Attach(hBmp);

Step 3: Create a Memory DC and Select the BMP to It

You also need to store the old BMP pointer:

CClientDC dc(this);
CDC bmDC;
bmDC.CreateCompatibleDC(&dc);
CBitmap *pOldbmp = bmDC.SelectObject(&bmp);

Step 4: Get the BMP Height and Width

Obtain this from CBitmap's GetBitmap function.

BITMAP  bi;
  bmp.GetBitmap(&bi);

Step 5: Get the Block of Pixels from memoryDC to the Screen

Use CClientDC's BitBlt function. Next, re-select the old BMP. The complete code is as follows:

void AppView::OnButton1()
{
   CString szFilename("C:\\Talla\\yourimg.bmp");
   HBITMAP hBmp = (HBITMAP)::LoadImage(NULL,szFilename,
                             IMAGE_BITMAP,0,0,
                             LR_LOADFROMFILE|LR_CREATEDIBSECTION);

   CBitmap bmp;
   bmp.Attach(hBmp);
   
   CClientDC dc(this);
   CDC bmDC;
   bmDC.CreateCompatibleDC(&dc);
   CBitmap *pOldbmp = bmDC.SelectObject(&bmp);

   BITMAP  bi;
   bmp.GetBitmap(&bi);

   dc.BitBlt(0,0,bi.bmWidth,bi.bmHeight,&bmDC,0,0,SRCCOPY);

   bmDC.SelectObject(pOldbmp);
}



Comments

  • Can not display bitmap on the screen !

    Posted by Tuyenkhuc on 03/10/2015 08:23am

    Thank bro, But when I debug this application, it displays nothing , that means I can not display the bitmap on the screen? First, I puted whole the code on OnPaint() function, it doesnt work,then I changed into OnDraw(), it doesnt work either. Any explain here, please help.

    Reply
  • Thanks

    Posted by kamelee on 08/08/2012 01:25pm

    I begin to study VC++, so some simple problems made me spent much time to think about the reason, this is the problem, thank you very much.

    Reply
  • Many Thanks!

    Posted by naree_oo on 05/27/2010 10:35am

    Many Thanks!

    Reply
  • It was very useful for me!

    Posted by gkpandi on 10/27/2009 01:25pm

    Thanks a lot.....

    Reply
  • Displaying a Bitmap from a BMP file

    Posted by samadejacobs on 01/26/2006 04:23am

    This works pretty fine Need to extract the bytestream from the Loaded bmp file I also need a source code to play and audio file and also extract its component frequency

    Reply
  • it works

    Posted by gaozhengwei on 11/17/2005 03:20pm

    but also need some refinement.such as dealing with the WM_PAINT msg

    Reply
  • good

    Posted by parveenmittal on 11/16/2005 01:45pm

    very well explained with simple steps. thanks Parveen

    Reply
  • Thank you

    Posted by sucer on 05/17/2004 06:52am

    very useful for the beginners,like me,and do you have some materal in jpeg2k? I 'll be very appriciated if you could send it to me,if you have.

    Reply
  • Thanks a lot

    Posted by Legacy on 02/03/2004 08:00am

    Originally posted by: maxcode

    It is good example for me to develop my programm
    thanks!

    Reply
  • Wavelet Transform Image Steganography Source code in VC++

    Posted by Legacy on 01/17/2004 08:00am

    Originally posted by: Priya

    sir,
    
    We are doing a project on IMAGE STEGANOGRAPHY using WAVELET TRANSFORM in VC++.We are in need of the source code so could you please send the code at the earliest.Thanking you.

    Yours faithfully,
    Priya

    Reply
  • Loading, Please Wait ...

  • You must have javascript enabled in order to post comments.

Leave a Comment
  • Your email address will not be published. All fields are required.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date