Displaying a Bitmap from a BMP File

WEBINAR: On-demand webcast

How to Boost Database Development Productivity on Linux, Docker, and Kubernetes with Microsoft SQL Server 2017 REGISTER >

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 01: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 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
  • Loading, Please Wait ...

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

Top White Papers and Webcasts

  • As all sorts of data becomes available for storage, analysis and retrieval - so called 'Big Data' - there are potentially huge benefits, but equally huge challenges...
  • The agile organization needs knowledge to act on, quickly and effectively. Though many organizations are clamouring for "Big Data", not nearly as many know what to do with it...
  • Cloud-based integration solutions can be confusing. Adding to the confusion are the multiple ways IT departments can deliver such integration...

Most Popular Programming Stories

More for Developers

RSS Feeds

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