Visual C++ Example: MFC Bitmap Button Source Code (CButton) |
LabWindows/CVI 2017 Help Edition Date: May 2017 Part Number: 370051AG-01 »View Product Info DOWNLOAD (Windows Only). The PictureButton comes in two versions: PictureButton—field value cannot be modifed at runtime. The field syntax is set to NED (non-editable) in usys.ini. PictureButtonupdatable—field value can be changed at runtime using the Uniface JavaScript API. We’re back this week to explore the fundamental elements of web development before we move into more complex topics. This weeks focus is JavaScript. If you haven’t checked out my previous blogs. PictureButton - RadioButton - ComboBox - CheckBox. Available Media (supporting file) Format. The following are available media format which c an be supported.
Introduction
CCustomBitmapButton is MFC control derived from the CWnd class. The button has two parts: a background and a foreground. If the operating system is WinXP and XP Themes are enabled the background is a bitmap loaded from the current active theme resource file (I use similar technique to draw the scroll buttons in the CCustomTabCtrl control); otherwise, the 'DrawFrameControl' function is used to draw the button background. The foreground is a user-defined monochrome bitmap (glyph) drawn transparently on the button background.
Supported features:
Standard or XP Themes view
12 predefined background styles
User-defined foregrounds (bitmap glyphs)
Button states supported: 'NORMAL','HOT','PRESSED', and 'DISABLED'
Buttons can be created in the caption bar area
Dialog, SDI and MDI support for the caption buttons
Ficker-free drawing
Built-in tooltips
Using the Code
To integrate the CCustomBitmapButton class into your application as a caption frame, please follow the steps below:
Add ThemeUtil.h, ThemeUtil.cpp, CustomBitmapButton.h, CustomBitmapButton.cpp, Tmschema.h, and Schemadef.h to your project.
Include CustomBitmapButton.h to the appropriate header file—usually the dialog class header where the CCustomBitmapButton class is used.
Declare m_ctrlCaptionFrame object of type CCustomBitmapButton in your dialog header.
Create the caption frame.
In your dialog's OnInitDialog, add the following code:
After creating the caption frame, add as many buttons as you need.
To add caption buttons, call AddCaptionButton in your dialog's OnInitDialog:
Process WM_NOTIFY messages from the caption buttons in your dialog class. As users click a button, the button sends notification messages (NM_CLICK, NM_RCLICK, NM_DBLCLK, and NM_RDBLCLK) to its parent window. Handle these messages if you want to do something in response.
Don't forget to destroy the caption frame; otherwise, you will have memory leaks.
CCustomBitmapButton Class Members
Construction/Destruction
Attributes
Operations
Notification Messages
Error Codes
Construction/Destruction
Constructs a CCustomBitmapButton object. |
Creates a bitmap button and attaches it to an instance of a CCustomBitmapButton object. |
Creates a caption frame. |
Destroys a caption frame. |
Attributes
Retrieves the pointer to the caption button. |
Changes the tooltip text of a button. |
Retrieves information about the button control background style. |
Changes the background style of a button. |
Retrieves the handle of the glyph bitmap previously set with SetGlyphBitmap. |
Specifies a glyph bitmap to be displayed on the button. |
Enables or disables the button. |
Operations
Inserts a new button in a caption bar. |
CCustomBitmapButton::CCustomBitmapButton
CCustomBitmapButton();
Remarks
Call this function to construct a CCustomBitmapButton object.
CCustomBitmapButton::Create
BOOLCreate(DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UINTnID);
Return Value
TRUE if initialization of the object was successful; otherwise, FALSE.
Parameters
dwStyle—Specifies the button style.
rect—Specifies the button size and position. It can be either a CRect object or a RECT structure.
pParentWnd—Specifies the button parent window.
nID—Specifies the button ID.
Remarks
Creates a bitmap button and attaches it to an instance of a CCustomBitmapButton object.
CCustomBitmapButton::CreateCaptionFrame
intCreateCaptionFrame(CWnd*pCaptionWnd,intnIDIcon);
Return Value
CBNERRR_NOERROR if successful; otherwise, CBNERRR_ERRORCODE.
Parameters
pCaptionWnd—Specifies the caption bar owner window.
nIDIcon—Specifies the caption icon resource id.
Remarks
Creates a caption frame.
CCustomBitmapButton::DestroyCaptionFrame
intDestroyCaptionFrame();
Return Value
CBNERRR_NOERROR if successful; otherwise, CBNERRR_ERRORCODE.
Remarks
Destroys a caption frame.
CCustomBitmapButton::GetCaptionButtonPtr
CCustomBitmapButton*GetCaptionButtonPtr(intnButtonID) const;
Return Value
Pointer to the CCustomBitmapButton object if successful; otherwise, NULL.
Parameters
nButtonID—The ID of the caption button.
Remarks
Call this function to retrieve the pointer to the caption button.
CCustomBitmapButton::SetTooltipText
intSetTooltipText(CStringsText);
Return Value
CBNERRR_NOERROR if successful; otherwise, CBNERRR_ERRORCODE.
Parameters
sText—Pointer to a string object that contains the new tooltip text.
Remarks
This function changes the tooltip text of a button.
CCustomBitmapButton::GetBkStyle
Picture Buttons Walmart
intGetBkStyle();
Return Value
Returns the button background style for this CCustomBitmapButton object.
Remarks
Call this function to retrieve information about the button control background style.
Picture Buttons Pins
CCustomBitmapButton::SetBkStyle
intSetBkStyle(intnBkStyle);
Return Value
CBNERRR_NOERROR if successful; otherwise, CBNERRR_ERRORCODE.
Parameters
nBkStyle—Specifies the button background style.
Supported background styles:
CBNBKGNDSTYLE_CAPTION—frame buttons
CBNBKGNDSTYLE_CLOSE
CBNBKGNDSTYLE_MDI
CBNBKGNDSTYLE_COMBO—combobox dropdown button
CBNBKGNDSTYLE_SPINUP—spin buttons
CBNBKGNDSTYLE_SPINDN
CBNBKGNDSTYLE_SPINUPHOR
CBNBKGNDSTYLE_SPINDNHOR
CBNBKGNDSTYLE_SCROLLUP—scrollbar buttons
CBNBKGNDSTYLE_SCROLLDOWN
CBNBKGNDSTYLE_SCROLLLEFT
CBNBKGNDSTYLE_SCROLLRIGHT
Remarks
Changes the background style of a button.
Picture Button Phone
CCustomBitmapButton::GetGlyphBitmap
HBITMAPGetGlyphBitmap();
Return Value
A handle to a bitmap. NULL if no bitmap is previously specified.
Remarks
Call this member function to get the handle of a glyph bitmap that is associated with a button.
CCustomBitmapButton::SetGlyphBitmap
intSetGlyphBitmap(HBITMAPhBmpGlyph);
Return Value
CBNERRR_NOERROR if successful; otherwise, CBNERRR_ERRORCODE.
Parameters
Picture Buttons Walgreens
hBmpGlyph—The handle of a bitmap.
Remarks
Call this member function to associate a new glyph bitmap with the button.
CCustomBitmapButton::EnableWindow
intEnableWindow(BOOLbEnable = TRUE);
Return Value
CBNERRR_NOERROR if successful; otherwise, CBNERRR_ERRORCODE.
Parameters
bEnable—Specifies whether the given window is to be enabled or disabled. If this parameter is TRUE, the window will be enabled. If this parameter is FALSE, the window will be disabled.
Remarks
Call this function to enable or disable a button control.
CCustomBitmapButton::AddCaptionButton
int AddCaptionButton( LPCRECT lpRect, UINT nID, int nBkStyle, BOOL fUserDefWidth );
Return Value
CBNERRR_NOERROR if successful; otherwise, CBNERRR_ERRORCODE.
Parameters
lpRect—Specifies the button width if fUserDefWidth is true; otherwise, ignored.
nID—Specifies the button ID.
nBkStyle—Specifies the button background style.
fUserDefWidth—If TRUE—user defined button width.
Picture Button In French
Remarks
Call this function to insert a new button in an existing caption bar.
Notification Messages
The following notification codes are supported by the button control:
NM_CLICK—User clicked left mouse button in the control.
NM_RCLICK—User clicked right mouse button in the control.
NM_DBLCLK—User double clicked left mouse button in the control.
NM_RDBLCLK—User double clicked right mouse button in the control.
Error Codes
Picture Button Kits
The following errors can be returned by the button control functions:
CBNERRR_NOERROR—Operation succesful.
CBNERR_OUTOFMEMORY—Function call failed because there was not enough memory available.
CBNERR_INCORRECTPARAMETER—Function call failed because an incorrect function parameter was specified.
CBNERR_INCORRECTBUTTONSTYLE—Function call failed because an incorrect button style was specified.
CBNERR_INCORRECTFRAMESTYLE—Function call failed because the WS_CAPTION style was not specified.
CBNERR_INCORRECTFUNCCALL—Incorrect function call (for example: ob.SetTooltipText(...) where ob is an instance of the caption frame object).
CBNERR_CREATEBUTTONFAILED—Function call failed because creation of the button control failed.
CBNERR_CREATETOOLTIPCTRLFAILED—Function call failed because creation of the tooltip control failed.
CBNERR_COPYIMAGEFAILED—Function call failed because copying of the glyph image failed.
CBNERR_SETWINDOWLONGFAILED—Call to the function 'SetWindowLong' failed.
CBNERR_FRAMEALREADYCREATED—Function call failed because the caption frame was already created.
CBNERR_FRAMENOTCREATED—Function call failed because the caption frame was not created.
Downloads
CustomBitmapButtonDemo.zip - Download source VC++ demo project - 40 Kb
CustomBitmapButtonDemo_exe.zip - Downloadsample demo executable - 26 Kb