Placing A Bitmap In The PropertySheet Button Area

I was recently asked to write an application for a company that wanted their logo on every single window in the program. As the application grew there became less and less space for a company bitmap logo within some of the tabbed-dialog boxes. Due to this I decided to see if I could place the bitmap logo in the PropertySheet area that is normally only used by the the OK, Cancel and Apply buttons. The picture below shows what I achived...

To do this is quite easy.

1. Firstly create a subclass of CPropertySheet called CMyPropertySheet.

2. Override the WM_PAINT message by creating an OnPaint() member function for CMyPropertySheet, and paste the follwing code into it.

CBitmap bmp, *poldbmp;
CDC memdc;
CRect rect;
	
//Load the bitmap resource 
bmp.LoadBitmap(IDB_BITMAPLOGO); 

//Create a compatible memory DC
memdc.CreateCompatibleDC(&dc);

//Select the bitmap into the DC
poldbmp = memdc.SelectObject(&bmp);//bmp

//Get size of PropertySheet
GetClientRect(&rect);

//Copy (BitBlt) bitmap from memory DC to screen DC
dc.BitBlt(left, rect.bottom - lower, w, h, &memdc, 0, 0, SRCCOPY);

memdc.SelectObject(poldbmp);

The dc.BitBlt places a w pixel wide by h pixel high image left pixels away from the left hand edge, and lower pixels away from the bottom of the PropertySheet. Change these values as you see fit.

3. #include "MyPropertSheet.h" in the calling dialog that you wish to use the new property page in.

4. Add PropertyPages to the PropertySheet and call it, e.g.....

    CMyPropertySheet sheet("Personnel Details");
CPerFildlg perfildlgPage;
CAddDetdlg adddetdlgPage;
CDelDetdlg deldetdlgPage;

sheet.AddPage(&perfildlgPage);
sheet.AddPage(&adddetdlgPage);
sheet.AddPage(&deldetdlgPage);

sheet.DoModal();

More advanced code for drawing bitmaps / DIBs which also uses palettes may be found on this site.

Download source - 1KB

Date Posted: 05/04/98



Comments

  • Overriding the OK and Cancel Buttons

    Posted by Legacy on 11/02/2000 12:00am

    Originally posted by: David Ishmael

    Is there a way to remove the focus of the OK and Cancel buttons?

    Reply
  • Any way to put the bitmap on the default buttons?

    Posted by Legacy on 04/25/2000 12:00am

    Originally posted by: K Parthasarathy

    Hi,

    Is there any way to put the bitmap images to the default buttons like OK , Next , Cancel and others given by the propertysheet

    Reply
  • Any way to put the Bitmap in the main Property Page area?

    Posted by Legacy on 11/24/1999 12:00am

    Originally posted by: Chris Fasulo

    I am looking for a way to put Bitmaps in the main area of the Property Page background. So that the bitmap image is the background for the property page.

    Reply
  • CListCtrl::GetHeaderCtrl()

    Posted by Legacy on 05/14/1999 12:00am

    Originally posted by: Sam Hobbs

    CListCtrl::GetHeaderCtrl() seems to be new for VC6. I cannot find it in VC5 documentation or MFC source browser dtat, but I find it in the VC6 documentation in MSDN. Has anyone looked to see if it uses one of the techniques dexcribed here?

    Reply
  • Little modification

    Posted by Legacy on 12/03/1998 12:00am

    Originally posted by: Catalin Hatmanu

    The line :
    
    dc.BitBlt(left, rect.bottom - lower, w, h, &memdc, 0, 0, SRCCOPY);
    can be replaced with:
    dc.BitBlt(left, rect.bottom - h - lower, w, h, &memdc, 0, 0, SRCCOPY);

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

Top White Papers and Webcasts

  • Live Event Date: October 29, 2014 @ 11:00 a.m. ET / 8:00 a.m. PT Are you interested in building a cognitive application using the power of IBM Watson? Need a platform that provides speed and ease for rapidly deploying this application? Join Chris Madison, Watson Solution Architect, as he walks through the process of building a Watson powered application on IBM Bluemix. Chris will talk about the new Watson Services just released on IBM bluemix, but more importantly he will do a step by step cognitive …

  • On-demand Event Event Date: October 23, 2014 Despite the current "virtualize everything" mentality, there are advantages to utilizing physical hardware for certain tasks. This is especially true for backups. In many cases, it is clearly in an organization's best interest to make use of physical, purpose-built backup appliances rather than relying on virtual backup software (VBA - Virtual Backup Appliances). Join us for this webcast to learn why physical appliances are preferable to virtual backup appliances, …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds