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

Comments
Thanks
Posted by kamelee on 08/08/2012 06:25amI 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.
ReplyMany Thanks!
Posted by naree_oo on 05/27/2010 03:35amMany Thanks!
ReplyIt was very useful for me!
Posted by gkpandi on 10/27/2009 06:25amDisplaying a Bitmap from a BMP file
Posted by samadejacobs on 01/25/2006 08:23pmThis 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
Replyit works
Posted by gaozhengwei on 11/17/2005 07:20ambut also need some refinement.such as dealing with the WM_PAINT msg
Replygood
Posted by parveenmittal on 11/16/2005 05:45amvery well explained with simple steps. thanks Parveen
ReplyThank you
Posted by sucer on 05/16/2004 11:52pmvery 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.
ReplyThanks a lot
Posted by Legacy on 02/03/2004 12:00amOriginally posted by: maxcode
It is good example for me to develop my programm
Replythanks!
Wavelet Transform Image Steganography Source code in VC++
Posted by Legacy on 01/17/2004 12:00amOriginally posted by: Priya
ReplyThank YOU!
Posted by Legacy on 12/21/2003 12:00amOriginally 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.
ReplyLoading, Please Wait ...