CPicture - The Yovav (Horror) PictureShow | CodeGuru

CPicture – The Yovav (Horror) PictureShow

[CPictureShow.jpg] 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. I created what I call a very *simple* and useful class. It can easily be implemented by adding it to a project. You don’t […]

Written By
CodeGuru Staff
CodeGuru Staff
Sep 17, 2001
1 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

[CPictureShow.jpg]

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.

I created what I call a very *simple* and useful class. It can easily be implemented by adding it to a project. You don’t have to be a real JPEG freak and invent all the header reading from the beginning (It uses the IPicture interface jst as Internet Explorer does)

About The Project

I Was a little carried away with this “ACDSee Alike” picture viewer. As it was not my main purpose – I didn’t have the time to make it “Perfect”. If you feel lucky and want to improve it here and there – please share it.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Picture (Implementations) Version 1.00
  Routines: 4 Showing Picture Files…
            (.BMP .DIB .EMF .GIF .ICO .JPG .WMF)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  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();
  IPicture* m_IPicture; // Same As
             // LPPICTURE (typedef IPicture __RPC_FAR *LPPICTURE)
  LONG      m_Height; // Height (In Pixels Ignor What
                      //      Current Device Context Uses)
  LONG      m_Weight; // Size Of The Image Object In
                      //      Bytes (File OR Resource)
  LONG      m_Width;  // Width (In Pixels Ignor What
                      //      Current Device Context Uses)
};
//~~~~~~~~~Example & Usage 4 Dummies~~~~~~~~~~~~~~
//
//  U Need 2 AddCPicture.CPP” and “CPicture.HInto
//  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
//
//  CPicture m_Picture;  // Create a Picture Object
//                       //    (An Instance Of This Class)
//  #include “Picture.h” // Make Sure U Include This
//                       //     Where U Gonna Create The Object…
//
//  Load Picture Data Into The IPicture Interface (.BMP
//                         .DIB .EMF .GIF .ICO .JPG .WMF)
//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  m_Picture.Load(“Test.JPG”); // Load From a File –
//                              //   Just Load It (Show Later)
//  m_Picture.Load(IDR_TEST, “JPG”); // Load From a Resource
//                                   //- Just Load It (Show Later)
//  (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);)
//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  m_Picture.UpdateSizeOnDC(&dc); // Get Picture Dimentions
//                                     //  In Pixels
//  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 “RegularMFC 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 = %4dnWidth = %4dnHeight = %4dnWeight = %4dn”,
//           m_Picture.m_Weight,
//           m_Picture.m_Width,
//           m_Picture.m_Height,
//           m_Picture.m_Weight);
//  AfxMessageBox(S);
//
//~~~~~~~~~~~~~~~~~Cut The Bull Here~~~~~~~~~~~~~~~~~~~~~

Downloads

Download demo (SDI) project – 193Kb

Download source (CPicture class only) – 7Kb

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.