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

  • When individual departments procure cloud service for their own use, they usually don't consider the hazardous organization-wide implications. Read this paper to learn best practices for setting up an internal, IT-based cloud brokerage function that service the entire organization. Find out how this approach enables you to retain top-down visibility and control of network security and manage the impact of cloud traffic on your WAN.

  • Moving from an on-premises environment to Office 365 does not remove the need to plan for disruptions or reduce the business risk requirements for protecting email services. If anything, some risks increase with a move to the cloud. Read how to ease the transition every business faces if considering or already migrating to cloud email. This white paper discusses: Setting expectations when migrating to Office 365 Understanding the implications of relying solely on Exchange Online security Necessary archiving …

Most Popular Programming Stories

More for Developers

RSS Feeds

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