Skip to main content
Email Password   helpLost your password?

After many days of searching (and not finding) a way to load a JPG from a resource and show it on a dialog based application, I decided to take steps

So I created what I call a very simple and useful class, it can easily be implemented by adding it to a project, and you do not have to be a real JPEG freak and invent all header reading from the beginning (it uses the IPicture interface - same way as Internet Explorer does)

About The Project

I was little carried away with this "ACDSee alike" picture viewer, as it was not my main purpose - I did not have the time to make it "perfect", if you feel lucky and want to improve it here and there then please share it with me.

COPYFREE (F) - ALL RIGHTS FREE

class CPicture
{
public:
	void FreePictureData();
	BOOL Load(CString sFilePathName);
	BOOL Load(UINT ResourceName, LPCSTR ResourceType);
	BOOL LoadPictureData(BYTE* pBuffer, int nSize);
	BOOL SaveAsBitmap(CString sFilePathName);
	BOOL Show(CDC* pDC, CPoint LeftTop, CPoint WidthHeight, int MagnifyX,
                  int MagnifyY);
	BOOL Show(CDC* pDC, CRect DrawRect);
	BOOL ShowBitmapResource(CDC* pDC, const int BMPResource, 
                                CPoint LeftTop);
	BOOL UpdateSizeOnDC(CDC* pDC);

	CPicture();
	virtual ~CPicture();
        // Same As LPPICTURE (typedef IPicture __RPC_FAR *LPPICTURE)
	IPicture* m_IPicture; 
	// Height (In Pixels Ignor What Current Device Context Uses)
	LONG m_Height; 	     
        // Size Of The Image Object In Bytes (File OR Resource) 
        LONG m_Weight;	
        // Width (In Pixels Ignor What Current Device Context Uses)
         LONG m_Width;  
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~Example & Usage 4 Dummies~~~~~~~~~~~~~~~~~~~~~~~~
//
//  U Need 2 Add "CPicture.CPP" and "CPicture.H" Into Your Project 
// (From FileView)
//  So U Will Get Control Over The Functions In This Class,
//  Then U Can Create a Picture Object And Show It On a Device Context
//
// Create a Picture Object (An Instance Of This Class)
//  CPicture m_Picture;  

// Make Sure U Include This Where U Gonna Create The Object...
//  #include "Picture.h" 
//  Load Picture Data Into The IPicture Interface 

(.BMP .DIB .EMF .GIF .ICO .JPG .WMF)
//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Load From a File - Just Load It (Show Later)
//	m_Picture.Load("Test.JPG"); 
// Load From a Resource - Just Load It (Show Later)
//	m_Picture.Load(IDR_TEST, "JPG"); 

//  (U Must Include IDR_TEST In Your Resources Under a Custom Name, 4 
//   Example - "JPG")
//  
//  When Using DC Object On a *Dialog Based* Application (CPaintDC dc(this);)
//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//	
// Get Picture Dimentions In Pixels
//      m_Picture.UpdateSizeOnDC(&dc); 
//	m_Picture.Show(&dc, CPoint(0,0), 
                       CPoint(m_Picture.m_Width, m_Picture.m_Height), 0,0);
//	
//      Change Original Dimentions
//      m_Picture.Show(&dc, CRect(0,0,100,100)); 

//      Show Bitmap Resource
//	m_Picture.ShowBitmapResource(&dc, IDB_TEST, CPoint(0,0)); 
//
//  OR When Using a Pointer On a "Regular" MFC Application (CDC* pDC)
//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//	m_Picture.UpdateSizeOnDC(pDC); // Get Picture Dimentions In Pixels
//	m_Picture.Show(pDC, CPoint(0,0),  CPoint
//                     m_Picture.m_Width,m_Picture.m_Height), 0,0);
//      Change Original Dimentions
//	m_Picture.Show(pDC, CRect(0,0,100,100)); 
//      Show Bitmap Resource
//	m_Picture.ShowBitmapResource(pDC, IDB_TEST, CPoint(0,0)); 
//  Show Picture Information
//  ~~~~~~~~~~~~~~~~~~~~~~~~
//	CString S;
//	S.Format("Size = %4d\nWidth = %4d\nHeight = %4d\nWeight = %4d\n",
//	         m_Picture.m_Weight, m_Picture.m_Width, 
//               m_Picture.m_Height,  m_Picture.m_Weight);
//	AfxMessageBox(S);
//
You must Sign In to use this message board.
 
 
Per page   
 FirstPrevNext
Generalimage in case of dialog box apps Pin
Sadru
21:29 1 Mar '09  
GeneralHow to rotate ? Pin
hujunxi
17:04 8 May '08  
GeneralJust one word Pin
Demian Panello
16:17 7 Jun '07  
GeneralThanks Pin
Kaworu2
23:34 21 Mar '06  
GeneralHow do i use it for IDC_STATIC control? Pin
etboite
23:05 10 Nov '05  
GeneralRe: How do i use it for IDC_STATIC control? Pin
K(arl)
21:56 23 Feb '06  
GeneralRe: How do i use it for IDC_STATIC control? Pin
serup
4:52 18 Sep '08  
GeneralDisplaying big images (need ScrollBar) Pin
angel420
14:27 18 Aug '05  
GeneralPixel value ? Pin
angel420
14:42 17 Aug '05  
GeneralRe: Pixel value ? Pin
Christian Graus
15:39 17 Aug '05  
GeneralRe: Pixel value ? Pin
angel420
14:01 18 Aug '05  
GeneralNice Class Pin
ThatsAlok
20:05 8 Jun '05  
GeneralCPicture to HBITMAP Pin
naragana
16:36 23 May '05  
GeneralRe: CPicture to HBITMAP Pin
ThatsAlok
1:46 20 Jun '05  
Generalbug in CPictureShowDoc::CreateFilesList Pin
shay cohen
23:22 4 Apr '05  
GeneralHelp!!!!! Pin
subbuviv
0:24 31 Mar '05  
Generalchange pictures in Dialog Pin
olis
5:31 7 Feb '05  
GeneralRotating an Image Pin
Alex Evans
17:42 3 Jan '05  
GeneralRe: Rotating an Image Pin
EinsteinJ
0:53 26 Sep '05  
GeneralLoading a picture from an ftp site Pin
rgarf
4:48 3 Sep '04  
Generalproblem in image compression in database Pin
KRANTHI KUMAR KUKKALA
4:45 31 Aug '04  
Generalhow to get image data as pixels? Pin
sgorgulu
4:15 23 Aug '04  
Generalhelloo sir one problem Pin
ThatsAlok
1:52 17 Jul '04  
GeneralIPictute and HBitmap Pin
Mirikos
11:25 22 Jun '04  
GeneralRe: IPictute and HBitmap Pin
mcanti
23:05 29 May '06  


Last Updated 18 Jun 2003 | Advertise | Privacy | Terms of Use | Copyright © CodeProject, 1999-2009