Displaying a Bitmap from a BMP File

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);
}

IT Offers

Comments

  • Thanks

    Posted by kamelee on 08/08/2012 06:25am

    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 03:35am

    Many Thanks!

    Reply
  • It was very useful for me!

    Posted by gkpandi on 10/27/2009 06:25am

    Thanks a lot.....

    Reply
  • Displaying a Bitmap from a BMP file

    Posted by samadejacobs on 01/25/2006 08:23pm

    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 07:20am

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

    Reply
  • good

    Posted by parveenmittal on 11/16/2005 05:45am

    very well explained with simple steps. thanks Parveen

    Reply
  • Thank you

    Posted by sucer on 05/16/2004 11:52pm

    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 12: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 12: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
  • Thank YOU!

    Posted by Legacy on 12/21/2003 12:00am

    Originally posted by: Jesse Puterbaugh

    been looking for something simple like this for a while now

    I am a beginning vc++ programmer and everything is so darn

    confusing. Your sample made me understand and it actually

    worked! I cant thank you enough now maybe I can move to

    animation and collision detection.

    Reply
  • Loading, Please Wait ...

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

Go Deeper

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds