|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Announcements
Want a new Job?
Chapters
Services
Feature Zones
|
SoftechSoftware homepage AbstractCButtonST is a class derived from MFC CButton class.
![]() Click here to see a real-world application made using CButtonST. How to integrate CButtonST in your applicationIn your project include the following files:
This 3rd party class gives you the ability to show menus using the most recent visual styles as seen on the latest Microsoft products or even in Windows XP. Latest BCMenu version can be found here. To enable support for BCMenu the following two lines in BtnST.h must be enabled: #define BTNST_USE_BCMENU #include "BCMenu.h"Also, the following files must be included in your project:
Starting from version 3.6, CButtonST can play sounds on particular button states. To enable support for sound the following line in BtnST.h must be enabled: #define BTNST_USE_SOUND
This gives access to the SetSound method.Create a CButtonST object statically With dialog editor create a standard button called, for example, IDOK (you don't need to make it owner drawn) and create a member variable for this button: CButtonST m_btnOk;Now attach the button to CButtonST. For dialog-based applications, in your OnInitDialog: // Call the base-class method CDialog::OnInitDialog(); // Create the IDOK button m_btnOk.SubclassDlgItem(IDOK, this);Or in your DoDataExchange: // Call the base method CDialog::DoDataExchange(pDX); // Create the IDOK button DDX_Control(pDX, IDOK, m_btnOk);Create a CButtonST object dynamically In your application, create a member variable for the button. Please note that this variable is a pointer: CButtonST* m_pbtnOk;Now create the button. For dialog-based applications, in your OnInitDialog: // Call the base-class method CDialog::OnInitDialog(); // Create the IDOK button m_pbtnOk = new CButtonST; m_pbtnOk->Create(_T("&Ok"), WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP,Remember to destroy the button or you will get a memory leak. This can be done, for example, in your class destructor: if (m_pbtnOk) delete m_pbtnOk; Class methodsSetIcon (using multi-size resources) // Parameters: // [IN] nIconIn // ID number of the icon resource to show when the mouse is over theSetIcon (using resources) Assigns icons to the button. Any previous icon or bitmap will be removed. // Parameters: // [IN] nIconIn // ID number of the icon resource to show when the mouse is over theSetIcon (using handles) Assigns icons to the button. Any previous icon or bitmap will be removed. // Parameters: // [IN] hIconIn // Handle fo the icon to show when the mouse is over the button. // Pass NULL to remove any icon from the button. // [IN] hIconOut // Handle to the icon to show when the mouse is outside the button.SetBitmaps (using resources) Assigns bitmaps to the button. Any previous icon or bitmap will be removed. // Parameters: // [IN] nBitmapIn // ID number of the bitmap resource to show when the mouse is SetBitmaps (using handles) // Parameters: // [IN] hBitmapIn // Handle fo the bitmap to show when the mouse is over the button. // Pass NULL to remove any bitmap from the button. // [IN] crTransColorIn // Color (inside hBitmapIn) to be used as transparent color. // [IN] hBitmapOut // Handle to the bitmap to show when the mouse is outside the button. // Can be NULL. // [IN] crTransColorOut // Color (inside hBitmapOut) to be used as transparent color. // // Return value: // BTNST_OK // Function executed successfully. // BTNST_INVALIDRESOURCE // Failed loading the specified resource. // BTNST_FAILEDMASK // Failed creating mask bitmap. // DWORD SetBitmaps(HBITMAP hBitmapIn, COLORREF crTransColorIn, SetFlat // Parameters: // [IN] bFlat // If TRUE the button will have a flat style, else // will have a standard style. // By default, CButtonST buttons are flat. // [IN] bRepaint // If TRUE the control will be repainted. // // Return value: // BTNST_OK // Function executed successfully. // DWORD SetFlat(BOOL bFlat = TRUE, BOOL bRepaint = TRUE)SetAlign Sets the alignment type between icon/bitmap and text. // Parameters: // [IN] byAlign // Alignment type. Can be one of the following values: // ST_ALIGN_HORIZ Icon/bitmap on the left, text on the right // ST_ALIGN_VERT Icon/bitmap on the top, text on the bottom // ST_ALIGN_HORIZ_RIGHT Icon/bitmap on the right, text on the left // ST_ALIGN_OVERLAP Icon/bitmap on the same space as text // By default, CButtonST buttons have ST_ALIGN_HORIZ alignment. // [IN] bRepaint // If TRUE the control will be repainted. // // Return value: // BTNST_OK // Function executed successfully. // BTNST_INVALIDALIGN // Alignment type not supported. // DWORD SetAlign(BYTE byAlign, BOOL bRepaint = TRUE)SetPressedStyle Sets the pressed style. // Parameters: // [IN] byStyle // Pressed style. Can be one of the following values: // BTNST_PRESSED_LEFTRIGHT Pressed style from left to right (as usual) // BTNST_PRESSED_TOPBOTTOM Pressed style from top to bottom // By default, CButtonST buttons have BTNST_PRESSED_LEFTRIGHT style. // [IN] bRepaint // If TRUE the control will be repainted. // // Return value: // BTNST_OK // Function executed successfully. // BTNST_INVALIDPRESSEDSTYLE // Pressed style not supported. // DWORD SetPressedStyle(BYTE byStyle, BOOL bRepaint = TRUE)SetCheck Sets the state of the checkbox. If the button is not a checkbox, this function has no meaning. // Parameters: // [IN] nCheck // 1 to check the checkbox. // 0 to un-check the checkbox. // [IN] bRepaint // If TRUE the control will be repainted. // // Return value: // BTNST_OK // Function executed successfully. // DWORD SetCheck(int nCheck, BOOL bRepaint = TRUE)GetCheck Returns the current state of the checkbox. If the button is not a checkbox, this function has no meaning. // Return value: // The current state of the checkbox. // 1 if checked. // 0 if not checked or the button is not a checkbox. // int GetCheck()SetDefaultColors Sets all colors to a default value. // Parameters: // [IN] bRepaint // If TRUE the control will be repainted. // // Return value: // BTNST_OK // Function executed successfully. // DWORD SetDefaultColors(BOOL bRepaint = TRUE)SetColor Sets the color to use for a particular state. // Parameters: // [IN] byColorIndex // Index of the color to set. Can be one of the following values: // BTNST_COLOR_BK_IN Background color when mouse is over the button // BTNST_COLOR_FG_IN Text color when mouse is over the button // BTNST_COLOR_BK_OUT Background color when mouse is outside the button // BTNST_COLOR_FG_OUT Text color when mouse is outside the button // BTNST_COLOR_BK_FOCUS Background color when the button is focused // BTNST_COLOR_FG_FOCUS Text color when the button is focused // [IN] crColor // New color. // [IN] bRepaint // If TRUE the control will be repainted. // // Return value: // BTNST_OK // Function executed successfully. // BTNST_INVALIDINDEX // Invalid color index. // DWORD SetColor(BYTE byColorIndex, COLORREF crColor, BOOL bRepaint = TRUE)GetColor Returns the color used for a particular state. // Parameters: // [IN] byColorIndex // Index of the color to get. // See SetColor for the list of available colors. // [OUT] crpColor // A pointer to a COLORREF that will receive the color. // // Return value: // BTNST_OK // Function executed successfully. // BTNST_INVALIDINDEX // Invalid color index. // DWORD GetColor(BYTE byColorIndex, COLORREF* crpColor)OffsetColor This function applies an offset to the RGB components of the specified color. This function can be seen as an easy way to make a color darker or lighter than its default value. // Parameters: // [IN] byColorIndex // Index of the color to set. // See SetColor for the list of available colors. // [IN] shOffsetColor // A short value indicating the offset to apply to the color. // This value must be between -255 and 255. // [IN] bRepaint // If TRUE the control will be repainted. // // Return value: // BTNST_OK // Function executed successfully. // BTNST_INVALIDINDEX // Invalid color index. // BTNST_BADPARAM // The specified offset is out of range. // DWORD OffsetColor(BYTE byColorIndex, short shOffset, BOOL bRepaint = TRUE)SetAlwaysTrack Sets the hilight logic for the button. Applies only to flat buttons. // Parameters: // [IN] bAlwaysTrack // If TRUE the button will be hilighted even if the window that owns it, is // not the active window. // If FALSE the button will be hilighted only if the window that owns it, // is the active window. // // Return value: // BTNST_OK // Function executed successfully. // DWORD SetAlwaysTrack(BOOL bAlwaysTrack = TRUE)SetBtnCursor Sets the cursor to be used when the mouse is over the button. // Parameters: // [IN] nCursorId // ID number of the cursor resource. // Pass NULL to remove a previously loaded cursor. // [IN] bRepaint // If TRUE the control will be repainted. // // Return value: // BTNST_OK // Function executed successfully. // BTNST_INVALIDRESOURCE // Failed loading the specified resource. // DWORD SetBtnCursor(int nCursorId = NULL, BOOL bRepaint = TRUE)DrawBorder Sets if the button border must be drawn. Applies only to flat buttons. // Parameters: // [IN] bDrawBorder // If TRUE the border will be drawn. // [IN] bRepaint // If TRUE the control will be repainted. // // Return value: // BTNST_OK // Function executed successfully. // DWORD DrawBorder(BOOL bDrawBorder = TRUE, BOOL bRepaint = TRUE)DrawFlatFocus Sets if the focus rectangle must be drawn for flat buttons. // Parameters: // [IN] bDrawFlatFocus // If TRUE the focus rectangle will be drawn also for flat buttons. // [IN] bRepaint // If TRUE the control will be repainted. // // Return value: // BTNST_OK // Function executed successfully. // DWORD DrawFlatFocus(BOOL bDrawFlatFocus, BOOL bRepaint = TRUE)SetTooltipText (Using resource) Sets the text to show in the button tooltip. // Parameters: // [IN] nText // ID number of the string resource containing the text to show. // [IN] bActivate // If TRUE the tooltip will be created active. // void SetTooltipText(int nText, BOOL bActivate = TRUE)SetTooltipText Sets the text to show in the button tooltip. // Parameters: // [IN] lpszText // Pointer to a null-terminated string containing the text to show. // [IN] bActivate // If TRUE the tooltip will be created active. // void SetTooltipText(LPCTSTR lpszText, BOOL bActivate = TRUE)EnableBalloonTooltip Enables the tooltip to be displayed using the balloon style. This function must be called before any call to SetTooltipText is made. // Return value: // BTNST_OK // Function executed successfully. // DWORD EnableBalloonTooltip()ActivateTooltip Enables or disables the button tooltip. // Parameters: // [IN] bActivate // If TRUE the tooltip will be activated. // void ActivateTooltip(BOOL bEnable = TRUE)GetDefault Returns if the button is the default button. // Return value: // TRUE // The button is the default button. // FALSE // The button is not the default button. // BOOL GetDefault()DrawTransparent Enables the transparent mode. Note: this operation is not reversible. DrawTransparent should be called just after the button is created. Do not use trasparent buttons until you really need it (you have a bitmapped background) since each transparent button makes a copy in memory of its background. This may bring unnecessary memory use and execution overload. // Parameters: // [IN] bRepaint // If TRUE the control will be repainted. // void DrawTransparent(BOOL bRepaint = FALSE)SetURL Sets the URL that will be opened when the button is clicked. // Parameters: // [IN] lpszURL // Pointer to a null-terminated string that contains the URL. // Pass NULL to removed any previously specified URL. // // Return value: // BTNST_OK // Function executed successfully. // DWORD SetURL(LPCTSTR lpszURL = NULL)SetMenu Associates a menu to the button. The menu will be displayed clicking the button. This method is available only if BTNST_USE_BCMENU is not defined. // Parameters: // [IN] nMenu // ID number of the menu resource. // Pass NULL to remove any menu from the button. // [IN] hParentWnd // Handle to the window that owns the menu. // This window receives all messages from the menu. // [IN] bRepaint // If TRUE the control will be repainted. // // Return value: // BTNST_OK // Function executed successfully. // BTNST_INVALIDRESOURCE // Failed loading the specified resource. // DWORD SetMenu(UINT nMenu, HWND hParentWnd, BOOL bRepaint = TRUE)SetMenu Associates a menu to the button. The menu will be displayed clicking the button. This method is available only if BTNST_USE_BCMENU is defined. The menu will be handled by the BCMenu class. // Parameters: // [IN] nMenu // ID number of the menu resource. // Pass NULL to remove any menu from the button. // [IN] hParentWnd // Handle to the window that owns the menu. // This window receives all messages from the menu. // [IN] bWinXPStyle // If TRUE the menu will be displayed using the new Windows XP style. // If FALSE the menu will be displayed using the standard style. // [IN] nToolbarID // Resource ID of the toolbar to be associated to the menu. // [IN] sizeToolbarIcon // A CSize object indicating the size (in pixels) of each iconSetMenuCallback Sets the callback message that will be sent to the specified window just before the menu associated to the button is displayed. // Parameters: // [IN] hWnd // Handle of the window that will receive the callback message. // Pass NULL to remove any previously specified callback message. // [IN] nMessage // Callback message to send to window. // [IN] lParam // A 32 bits user specified value that will be passed to theSizeToContent Resizes the button to the same size of the image. To get good results both the IN and OUT images should have the same size. void SizeToContent()
SetSoundSets the sound that must be played on particular button states. This method is available only if BTNST_USE_SOUND is defined. // Parameters: // [IN] lpszSound // A string that specifies the sound to play. // If hMod is NULL this string is interpreted as a filename,OnDrawBackground This function is called every time the button background needs to be painted. If the button is in transparent mode this function will NOT be called. This is a virtual function that can be rewritten in CButtonST-derived classes to produce a whole range of buttons not available by default. // Parameters: // [IN] pDC // Pointer to a CDC object that indicates the device context. // [IN] pRect // Pointer to a CRect object that indicates the bounds of the // area to be painted. // // Return value: // BTNST_OK // Function executed successfully. // virtual DWORD OnDrawBackground(CDC* pDC, CRect* pRect)OnDrawBorder This function is called every time the button border needs to be painted. This is a virtual function that can be rewritten in CButtonST-derived classes to produce a whole range of buttons not available by default. // Parameters: // [IN] pDC // Pointer to a CDC object that indicates the device context. // [IN] pRect // Pointer to a CRect object that indicates the bounds of the // area to be painted. // // Return value: // BTNST_OK // Function executed successfully. // virtual DWORD OnDrawBorder(CDC* pDC, CRect* pRect)GetVersionI Returns the class version as a short value. // Return value: // Class version. Divide by 10 to get actual version. // static short GetVersionI()GetVersionC Returns the class version as a string value. // Return value: // Pointer to a null-terminated string containig the class version. // static LPCTSTR GetVersionC() History
RemarksThe demo application shows nearly all the features of the ThanksThanks very much to the dozens of users that are using DisclaimerTHE SOFTWARE AND THE ACCOMPANYING FILES ARE DISTRIBUTED "AS IS" AND WITHOUT ANY WARRANTIES WHETHER EXPRESSED OR IMPLIED. NO REPONSIBILITIES FOR POSSIBLE DAMAGES OR EVEN FUNCTIONALITY CAN BE TAKEN. THE USER MUST ASSUME THE ENTIRE RISK OF USING THIS SOFTWARE.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||