How to Use CBitmapButton to Resize a Bitmap to Fit a ButtonID: Q134421
|
You can override the default behavior of CBitmapButton so the bitmap sizes to fit the button. How CBitmapButtons behave during initialization depends on which function is used to load the bitmaps.
Function Behavior When used
AutoLoad() button sizes to bitmap button is in dialog box
LoadBitmaps() button remains at size button is in non-dialog
specified when created window
If you want the bitmap to stretch to fit the dimensions of the button you
create, you must override these functions:
CBitmapButton::AutoLoad()
CBitmapButton::DrawItem()
NOTE: You need only override AutoLoad() if you call it to initialize a
button.
The following steps give the necessary changes to AutoLoad and DrawItem:
class CMyButton: public CBitmapButton
{
...
public:
CMyButton(){};
BOOL AutoLoad(UINT nID, CWnd* pParent); // ADD THIS LINE
...
};
// change following to a comment to prevent button resizing
// SizeToContent();
class CMyButton: public CBitmapButton
{
...
public:
CMyButton(){};
void DrawItem(LPDRAWITEMSTRUCT lpDIS); // ADD THIS LINE
...
};
pDC->BitBlt(rect.left, rect.top, rect.Width(), rect.Height(),
&memDC, 0, 0, SRCCOPY);
with this code:
// determine bitmaps size for use in StretchBlt
BITMAP bits;
pBitmap->GetObject(sizeof(BITMAP),&bits);
pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),
&memDC,0,0,bits.bmWidth, bits.bmHeight, SRCCOPY);
Additional query words: kbinf 1.50 1.51 1.52 2.50 2.51 2.52 2.00 2.10 2.20 3.00 3.10 4.00 4.10 4.20
Keywords : kbcode kbMFC KbUIDesign kbVC
Version : 1.50 1.51 1.52 | 2.00 2.10 2.20
Platform : NT WINDOWS
Issue type :
Last Reviewed: August 8, 1999