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

  • On-demand Event Event Date: February 12, 2015 The evolution of systems engineering with the SysML modeling language has resulted in improved requirements specification, better architectural definition, and better hand-off to downstream engineering. Agile methods have proven successful in the software domain, but how can these methods be applied to systems engineering? Check out this webcast and join Bruce Powel Douglass, author of Real-Time Agility, as he discusses how agile methods have had a tremendous …

  • The mobile market is white hot. Building a well-crafted product development plan that addresses market research, strategy, design, and development will provide the greatest chance for success. Each phase of an app's lifecycle is critical to the its overall success and feeds into the next step of the process of product development for the app. This white paper examines the five key phases of mobile app creation, one by one, to understand how they work together to help create a successful mobile app.

Most Popular Programming Stories

More for Developers

RSS Feeds

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