You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

822 lines
34 KiB
C++

// XTPButton.h : interface for the CXTPButton class.
//
// This file is a part of the XTREME CONTROLS MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTPBUTTON_H__)
#define __XTPBUTTON_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPImageManager;
class CXTPImageManagerIcon;
class CXTPMarkupContext;
class CXTPMarkupUIElement;
class CXTPButtonTheme;
class CXTPImageManagerIconHandle;
class CXTPToolTipContext;
#ifndef CXTPButtonBase
#define CXTPButtonBase CButton
#endif
// -------------------------------------------------------------------
// Summary:
// Image and text relationship settings for a pushbutton control.
// Remarks:
// The CXTPButton::SetTextImageRelation method uses flags from the XTPButtonTextImageRelation
// enumeration to set the text and image relationship inside the button control.
// -------------------------------------------------------------------
enum XTPButtonTextImageRelation
{
xtpButtonOverlay, // Image is displayed over top of the text.
xtpButtonImageAboveText, // Image is displayed above the text.
xtpButtonTextAboveImage, // Text is displayed above the image.
xtpButtonImageBeforeText, // Image is displayed before\to the left of the text.
xtpButtonTextBeforeImage // Text is displayed before\to the left of the image.
};
// -------------------------------------------------------------------
// Summary:
// PushButton styles.
// Remarks:
// The CXTPButton::SetPushButtonStyle method uses flags from the XTPPushButtonStyle
// enumeration to set the style of the button.
// -------------------------------------------------------------------
enum XTPPushButtonStyle
{
xtpButtonNormal, // Normal push button.
xtpButtonDropDown, // Dropdown button. Button will have an arrow indication it has a dropdown. The dropdown will appear under the button.
xtpButtonDropDownRight, // Dropdown button. Button will have an arrow indication it has a dropdown. The dropdown will appear to the right of the button.
xtpButtonSplitDropDown, // Split button. Button will be split into a "button" part and "arrow" part. The "arrow" part will have an arrow indication it has a dropdown. The dropdown will appear under the button when t he "arrow" part is clicked.
xtpButtonDropDownNoGlyph
};
// -------------------------------------------------------------------
// Summary:
// Gets or sets the border style of the control.
// Remarks:
// There are 3 different border styles for the control which are
// single line with caption, complete border with caption and no
// border or caption. CXTPButton::SetBorderStyle method stores a
// value from the XTPGroupBoxBorderStyle enumeration to specify
// the border style of the control.
// -------------------------------------------------------------------
enum XTPGroupBoxBorderStyle
{
xtpGroupBoxBorder, // Complete frame with caption.
xtpGroupBoxSingleLine, // Single line with caption.
xtpGroupBoxNone // No frame or caption.
};
//===========================================================================
// Summary:
// Push Button control.
//===========================================================================
class _XTP_EXT_CLASS CXTPButton : public CXTPButtonBase
{
#ifndef _XTP_ACTIVEX_BUTTON
DECLARE_DYNAMIC(CXTPButton)
#endif
public:
// ----------------------------------------
// Summary:
// Constructs a CXTPButton object
// ----------------------------------------
CXTPButton();
// -----------------------------------------------------------
// Summary:
// Destroys a CXTPButton object, handles cleanup and
// deallocation
// -----------------------------------------------------------
virtual ~CXTPButton();
public:
//-----------------------------------------------------------------------
// Summary:
// Returns the button styles for this object. This function returns only the BS_ style values, not any of the other window styles.
// Returns: Returns BS_ style for this button.
//-----------------------------------------------------------------------
BYTE GetButtonStyle() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member function to determine if the the button is currently being pushed.
// Returns:
// TRUE if the button is currently being pushed, FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL IsPushed();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to determine if the the button is currently being highlighted (mouse over).
// Returns:
// TRUE if the button is currently being highlighted (mouse over), FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL IsHighlighted();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to determine if the checked state has
// been defined for the button control.
// Returns:
// TRUE if the checked state is defined for the button control,
// otherwise returns FALSE.
//-----------------------------------------------------------------------
virtual BOOL GetChecked();
// ------------------------------------------------------------------------
// Summary:
// Sets the highlight state for the button control.
// Parameters:
// bChecked - Specifies whether the button is to be checked. TRUE will
// check the button. FALSE will uncheck it.
// Remarks:
// This member function sets the highlighting state of the button
// control. This is the same as its CButton counterpart, except the
// m_bChecked flag is set. This is done because MFC does not recognize
// the button as being checked unless it is a radio or check box.
// ------------------------------------------------------------------------
void SetChecked(BOOL bChecked);
//-----------------------------------------------------------------------
// Summary:
// Gets the flat style appearance of the button control.
// Remarks:
// The control will appear flat until the mouse pointer moves over it,
// at which point it appears three-dimensional.
// Returns:
// TRUE if the flat style is used, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL GetFlatStyle() const;
//-----------------------------------------------------------------------
// Summary:
// Sets the flat style appearance of the button control.
// Parameters:
// bFlatStyle - TRUE to use the flat style, FALSE otherwise.
// Remarks:
// The control will appear flat until the mouse pointer moves over it,
// at which point it appears three-dimensional.
//-----------------------------------------------------------------------
void SetFlatStyle(BOOL bFlatStyle = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Determines if the control is drawn using visual styles\SkinFramework, if supported.
// Remarks:
// This method enables Windows XP visual styles for the control. This
// Control will draw with visual styles if the control and the operating
// system supports it.
// Visual styles and SkinFramwork skins are specifications for the
// appearance of controls. GetUseVisualStyle determines whether to
// use the currently set Windows XP visual style. If using SkinFramwork,
// it determines whether to use the currently set style of the SkinFramework.
// Returns:
// TRUE if the currently set Windows XP visual style will be used to
// theme the control. If using SkinFramwork, the currently set style
// of the SkinFramework will be used to skin the control.
//
// FALSE if the currently set appearance\style in the OS will be used.
//-----------------------------------------------------------------------
BOOL GetUseVisualStyle() const;
//-----------------------------------------------------------------------
// Summary:
// Enables Windows XP visual styles for the control.
// Remarks:
// This method enables Windows XP visual styles for the control. This
// Control will draw with visual styles if the control and the operating
// system supports it.
// Visual styles and SkinFramwork skins are specifications for the
// appearance of controls. GetUseVisualStyle determines whether to
// use the currently set Windows XP visual style. If using SkinFramwork,
// it determines whether to use the currently set style of the SkinFramework.
// Parameters:
// bUseVisualStyle - TRUE if the currently set Windows XP visual style will be used to
// theme the control. If using SkinFramwork, the currently set style
// of the SkinFramework will be used to skin the control.
//
// FALSE if the currently set appearance\style in the OS will be used.
//-----------------------------------------------------------------------
void SetUseVisualStyle(BOOL bUseVisualStyle = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Call this member function to determine the gap between the
// button image and the button's edge.
// Returns:
// The amount in pixels between the button image and border.
//-----------------------------------------------------------------------
long GetBorderGap() const;
//-----------------------------------------------------------------------
// Summary:
// This member function will set the gap between the button's edge
// and the image.
// Parameters:
// nBorderGap - Amount in pixels of the gap between the button edge and
// the image.
// Returns:
// The previous border gap value.
//-----------------------------------------------------------------------
void SetBorderGap(int nBorderGap);
//-----------------------------------------------------------------------
// Summary:
// This function returns a flag from the XTPPushButtonStyle enumeration
// the show the current style of the button.
// Returns:
// The button styles for this CXTPButton object.
//-----------------------------------------------------------------------
XTPPushButtonStyle GetPushButtonStyle() const;
// ----------------------------------------------------------------------------
// Summary:
// This member function will set the display style for the button.
// Parameters:
// nPushButtonStyle - Specifies the button style. The button style can be defined
// as one or more of the styles listed in the Remarks section.
// Remarks:
// The Button can be set to and value from the XTPPushButtonStyle enumeration.
// See Also:
// GetPushButtonStyle
// ----------------------------------------------------------------------------
void SetPushButtonStyle(XTPPushButtonStyle nPushButtonStyle);
//-----------------------------------------------------------------------
// Summary:
// Gets the alignment of the text on the button control.
// Returns:
// Alignment of the text on the button control.
//-----------------------------------------------------------------------
virtual int GetTextAlignment() const;
//-----------------------------------------------------------------------
// Summary:
// Sets the alignment of the text on the button control.
// Parameters:
// dwAlignment - Alignment of the text on the button control.
//-----------------------------------------------------------------------
void SetTextAlignment(DWORD dwAlignment);
//-----------------------------------------------------------------------
// Summary:
// Gets the alignment of the image on the button control.
// Returns:
// Alignment of the image on the button control.
//-----------------------------------------------------------------------
virtual int GetImageAlignment() const;
//-----------------------------------------------------------------------
// Summary:
// Sets the alignment of the image on the button control.
// Parameters:
// dwAlignment - Alignment of the image on the button control.
//-----------------------------------------------------------------------
void SetImageAlignment(DWORD dwAlignment);
//-----------------------------------------------------------------------
// Summary:
// Gets the text and image relation in the button.
// Returns:
// Flag from the XTPButtonTextImageRelation enumeration that
// specifies the text and image relation in the button
//-----------------------------------------------------------------------
XTPButtonTextImageRelation GetTextImageRelation() const;
//-----------------------------------------------------------------------
// Summary:
// Sets the text and image relation in the button.
// Parameters:
// realtion - Flag from the XTPButtonTextImageRelation enumeration that
// specifies the text and image relation in the button
//-----------------------------------------------------------------------
void SetTextImageRelation(XTPButtonTextImageRelation realtion);
//-----------------------------------------------------------------------
// Summary:
// Call this member function to determine the gap between the
// button text and the image.
// Returns:
// The amount in pixels between the button text and image displayed.
//-----------------------------------------------------------------------
long GetImageGap() const;
//-----------------------------------------------------------------------
// Summary:
// This member function will set the gap between the button's text
// and the image.
// Parameters:
// nImageGap - Amount in pixels of the gap between the button text and
// the image.
// Returns:
// The previous border gap value.
//-----------------------------------------------------------------------
void SetImageGap(int nImageGap);
//-----------------------------------------------------------------------
// Summary:
// Call this member function to return the size of the image
// displayed for the button control.
// Returns:
// A CSize object.
//-----------------------------------------------------------------------
virtual CSize GetImageSize();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to return a pointer to the image
// manager for the button control.
// Returns:
// A pointer to a CXTPImageManagerIcon object.
//-----------------------------------------------------------------------
CXTPImageManagerIcon* GetIcon() const;
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw the image of the control.
// Parameters:
// pDC - Pointer to a valid device context.
// rc - Size of the image.
//-----------------------------------------------------------------------
virtual void DrawImage(CDC* pDC, CRect rc);
//-----------------------------------------------------------------------
// Summary:
// Gets the border style of the control.
// Returns:
// Flag from the XTPGroupBoxBorderStyle enumeration that
// specifies the border style of the control.
//-----------------------------------------------------------------------
XTPGroupBoxBorderStyle GetBorderStyle() const;
//-----------------------------------------------------------------------
// Summary:
// Sets the border style of the control.
// Parameters:
// style - Flag from the XTPGroupBoxBorderStyle enumeration that
// specifies the border style of the control.
//-----------------------------------------------------------------------
void SetBorderStyle(XTPGroupBoxBorderStyle style);
//-----------------------------------------------------------------------
// Summary:
// Determines whether a focus rectangle is drawn around the contents of a
// button when the button has focus.
// Returns:
// TRUE to show the focus rectangle, FALSE to hide it.
//-----------------------------------------------------------------------
BOOL GetShowFocus() const;
//-----------------------------------------------------------------------
// Summary:
// Specifies whether a focus rectangle is drawn around the contents of a
// button when the button has focus.
// Parameters:
// bShowFocus - TRUE to show the focus rectangle, FALSE to hide it.
//-----------------------------------------------------------------------
void SetShowFocus(BOOL bShowFocus);
//-----------------------------------------------------------------------
// Summary:
// Call this member to switch the visual theme of the control.
// Parameters:
// eTheme - New visual theme. Can be any of the values listed in the Remarks section.
// pPaintManager - A CXTPButtonTheme pointer to the theme object.
// If pPaintManager is NULL - themes are disabled and the paint
// manager is used.
// Remarks:
// eTheme can be one of the following:
// * <b>xtpControlThemeDefault</b> Use default theme.
// * <b>xtpControlThemeFlat</b> Flat appearance style.
// * <b>xtpControlThemeUltraFlat</b> Ultra flat appearance style.
// * <b>xtpControlThemeOffice2000</b> Office 2000 appearance style.
// * <b>xtpControlThemeOfficeXP</b> Office XP appearance style.
// * <b>xtpControlThemeOffice2003</b> Office 2003 appearance style.
// * <b>xtpControlThemeResource</b> Office 2007 appearance style.
// Returns:
// The version that accepts a XTPControlTheme style returns TRUE if successful, otherwise FALSE.
//-----------------------------------------------------------------------
virtual BOOL SetTheme(XTPControlTheme eTheme);
void SetTheme(CXTPButtonTheme* pPaintManager);
//-----------------------------------------------------------------------
// Summary:
// Call this member function to get a pointer to the currently selected theme.
// Returns:
// A pointer to a CXTPButtonTheme object representing the currently selected theme.
//-----------------------------------------------------------------------
CXTPButtonTheme* GetTheme();
//-----------------------------------------------------------------------
// Summary:
// Redraws the button.
// Parameters:
// bUpdateWindow - TRUE to notify the parent window.
//-----------------------------------------------------------------------
void RedrawButton(BOOL bUpdateWindow = FALSE);
//-----------------------------------------------------------------------
// Summary:
// This member function is called to determine if the buttons has a drop
// down arrow and is drop down style.
// Returns:
// TRUE if the button uses the Drop Down Style, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL IsDropDownStyle() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is called to determine the size and location
// of the button.
// Returns:
// The size and location of the button or an empty rect
// if no button is defined.
//-----------------------------------------------------------------------
virtual CRect GetButtonRect();
//-----------------------------------------------------------------------
// Summary:
// Sets the control used as the buddy control.
// Parameters:
// pWndBuddy - Handle to the control to use as a buddy.
// bMoveButton - TRUE to move Button, FALSE to move Buddy.
//-----------------------------------------------------------------------
void SetBuddy(CWnd* pWndBuddy, BOOL bMoveButton = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Associates ToolTip text with the button.
// Parameters:
// lpszTooltip - The ToolTip text to display when the mouse cursor is over the item.
//-----------------------------------------------------------------------
void SetTooltip(LPCTSTR lpszTooltip);
//-----------------------------------------------------------------------
// Summary:
// Call this member to retrieve the button's tooltip
// Returns:
// The ToolTip text for the button.
//-----------------------------------------------------------------------
CString GetTooltip() const;
//-----------------------------------------------------------------------
// Summary:
// Call this method to get tooltip context pointer.
//-----------------------------------------------------------------------
CXTPToolTipContext* GetToolTipContext() const;
public:
//-----------------------------------------------------------------------
// Summary:
// This member function will set the normal and hot state icons for
// the push button.
// Parameters:
// size - CSize object that represents the size of the icon.
// hIcon - Handle to the normal icon.
// pIcon - Handle to a CXTPImageManagerIcon icon.
// hIconHandle - Handle to the normal icon.
// hIconHot - Handle to the hot icon.
// hIconHotHandle - Handle to the hot icon.
// nID - Resource ID for the normal icon.
// nHotID - Resource ID for the pressed icon.
// lpszID - Resource string ID for the normal icon.
// lpszHotID - Resource string ID for the hot icon.
// bRedraw - Specifies whether the button is to be redrawn. A
// nonzero value redraws the button. A zero value does
// not redraw the button. The button is redrawn by default.
// Returns:
// TRUE if successful, otherwise returns FALSE.
//-----------------------------------------------------------------------
virtual BOOL SetIcon(CSize size, HICON hIcon, HICON hIconHot = NULL, BOOL bRedraw = TRUE);
virtual BOOL SetIcon(CSize size, UINT nID, UINT nHotID = 0, BOOL bRedraw = TRUE); //<COMBINE CXTPButton::SetIcon@CSize@HICON@HICON@BOOL>
virtual BOOL SetIcon(CSize size, LPCTSTR lpszID, LPCTSTR lpszHotID = NULL, BOOL bRedraw = TRUE); //<COMBINE CXTPButton::SetIcon@CSize@HICON@HICON@BOOL>
BOOL SetIcon(CSize size, CXTPImageManagerIcon* pIcon, BOOL bRedraw = TRUE); //<COMBINE CXTPButton::SetIcon@CSize@HICON@HICON@BOOL>
//-----------------------------------------------------------------------
// Summary:
// This member function will set the normal and hot state icons for
// the push button.
// Parameters:
// size - CSize object that represents the size of the icon.
// hIconHandle - Handle to the normal icon.
// hIconHotHandle - Handle to the hot icon.
// bRedraw - Specifies whether the button is to be redrawn. A
// nonzero value redraws the button. A zero value does
// not redraw the button. The button is redrawn by default.
// Returns:
// TRUE if successful, otherwise returns FALSE.
//-----------------------------------------------------------------------
virtual BOOL SetIcon(CSize size, const CXTPImageManagerIconHandle& hIconHandle, const CXTPImageManagerIconHandle& hIconHotHandle, BOOL bRedraw = TRUE);
//-----------------------------------------------------------------------
// Summary:
// This member function will set the bitmap associated with the
// button.
// Parameters:
// size - CSize object that represents the size of the bitmap.
// nID - Resource ID for the bitmap.
// bRedraw - Specifies whether the button is to be redrawn. A nonzero
// value redraws the button. A zero value does not redraw
// the button. The button is redrawn by default.
// Returns:
// TRUE if successful, otherwise returns FALSE.
//-----------------------------------------------------------------------
virtual BOOL SetBitmap(CSize size, UINT nID, BOOL bRedraw = TRUE);
public:
//-----------------------------------------------------------------------
// Summary:
// Call this member function to return the button's text minus the '&'.
// Parameters:
// bRemoveAmpersand - TRUE to remove the '&' used for mnemonics.
// Returns:
// A CString object that represents the button's text.
//-----------------------------------------------------------------------
virtual CString GetButtonText();
//-----------------------------------------------------------------------
// Summary:
// Returns the size of the check box glyph.
// Parameters:
// bCheckBox - TRUE if the Checkbox is checked, FALSE otherwise.
// Returns:
// The size of the check box glyph.
//-----------------------------------------------------------------------
CSize GetGlyphSize(BOOL bCheckBox);
//-----------------------------------------------------------------------
// Summary:
// Determines if the button is a push button or drop down button.
// Returns:
// TRUE if the buttonis a push button, FALSE if it is a drop down button.
//-----------------------------------------------------------------------
BOOL IsPushButton() const;
//-----------------------------------------------------------------------
// Summary: Allows the use of a XAML snippet to be used for the Text of
// panes in the control.
// Input: bEnableMarkup - TRUE to enable markup, FALSE to disable markup.
//-----------------------------------------------------------------------
void EnableMarkup(BOOL bEnableMarkup = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Gets the button's text color.
// Returns:
// The button's text color.
//-----------------------------------------------------------------------
virtual COLORREF GetButtonTextColor();
//-----------------------------------------------------------------------
// Summary:
// Gets the button's back color.
// Returns:
// The button's back color.
//-----------------------------------------------------------------------
virtual COLORREF GetButtonBackColor();
//-----------------------------------------------------------------------
// Summary: Returns markup context.
// Returns: Returns markup context.
//-----------------------------------------------------------------------
CXTPMarkupContext* GetMarkupContext() const;
//-----------------------------------------------------------------------
// Summary: Call this method to get Markup element that renders caption of the control.
// Returns: Pointer to CXTPMarkupUIElement element.
//-----------------------------------------------------------------------
CXTPMarkupUIElement* GetMarkupUIElement();
protected:
//-----------------------------------------------------------------------
// Summary:
// Occurs when the drop down button is dropped down.
//-----------------------------------------------------------------------
virtual void OnDropDown();
//-----------------------------------------------------------------------
// Summary:
// This member function performs all of the drawing logic of the
// calendar control window.
// Parameters:
// pDC - Pointer to a valid device context.
//-----------------------------------------------------------------------
virtual void OnDraw(CDC* pDC);
//-----------------------------------------------------------------------
// Summary:
// This member function is called when the text has changed.
//-----------------------------------------------------------------------
virtual void InternalTextChanged();
//-----------------------------------------------------------------------
// Summary:
// Manually drops down a drop down button.
//-----------------------------------------------------------------------
void DoDropDown();
//-----------------------------------------------------------------------
// Summary:
// Call this member function to refresh theme colors and redraw the control.
//-----------------------------------------------------------------------
virtual void RefreshMetrics();
protected:
//{{AFX_CODEJOCK_PRIVATE
//{{AFX_VIRTUAL(CXTPButton)
virtual void DoDraw(CDC* pDC);
virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
//}}AFX_VIRTUAL
//{{AFX_MSG(CXTPButton)
// Window
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnPaint();
// Focus
afx_msg void OnSetFocus(CWnd* pOldWnd);
afx_msg void OnKillFocus(CWnd* pNewWnd);
// Mouse
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnMouseLeave();
//
afx_msg LRESULT OnSetStyle(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnSetState(WPARAM wParam, LPARAM lParam);
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnInvalidate();
afx_msg LRESULT OnCaptureChanged(WPARAM, LPARAM);
afx_msg LRESULT OnDefaultAndInvalidate(WPARAM, LPARAM);
afx_msg LRESULT OnUpdateUIState(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnGetDlgCode(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnSetTheme(WPARAM wParam, LPARAM lParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
//}}AFX_CODEJOCK_PRIVATE
protected:
BOOL m_bPushed; // TRUE if button was pressed
BOOL m_bHot; // TRUE if mouse under button
CXTPButtonTheme* m_pTheme; // Pointer to the current theme object.
BOOL m_bChecked; // TRUE if checked.
BOOL m_bFlatStyle; // TRUE to se the flat style.
BOOL m_bUseVisualStyle; // TRUE to use visual styles.
long m_nImageAlignment; // Image Alignment.
long m_nBorderGap; // Gap between the button edge and the image.
long m_nPushButtonStyle; // The style of the button,
BOOL m_bEnableMarkup; // TRUE to enable markup.
long m_nImageGap; // Gap between the button text and the image.
long m_nTextImageRelation; // Image and text orientation.
CXTPImageManagerIcon* m_pIcon; // Multiple state icon manager converts icon to different states.
long m_nBorderStyle; // Border style used.
BOOL m_bShowFocus; // TRUE to show the focus rectangle.
HWND m_hWndBuddy; // Handle to the buddy control.
CXTPToolTipContext* m_pToolTipContext; // TooltipContext
CString m_strTooltip; // Tooltip of the item.
protected:
CXTPMarkupContext* m_pMarkupContext; // Markup context.
CXTPMarkupUIElement* m_pUIElement; // Markup element pointer.
};
AFX_INLINE BOOL CXTPButton::IsPushed() {
return m_bPushed;
}
AFX_INLINE BOOL CXTPButton::IsHighlighted() {
return m_bHot || (::GetCapture() == m_hWnd);
}
AFX_INLINE BOOL CXTPButton::GetFlatStyle() const{
return m_bFlatStyle;
}
AFX_INLINE void CXTPButton::SetFlatStyle(BOOL bFlatStyle/* = TRUE*/) {
m_bFlatStyle = bFlatStyle;
RedrawButton();
}
AFX_INLINE BOOL CXTPButton::GetUseVisualStyle() const {
return m_bUseVisualStyle;
}
AFX_INLINE long CXTPButton::GetBorderGap() const {
return m_nBorderGap;
}
AFX_INLINE void CXTPButton::SetBorderGap(int nBorderGap) {
m_nBorderGap = nBorderGap;
RedrawButton();
}
AFX_INLINE XTPPushButtonStyle CXTPButton::GetPushButtonStyle() const {
return (XTPPushButtonStyle)m_nPushButtonStyle;
}
AFX_INLINE void CXTPButton::SetPushButtonStyle(XTPPushButtonStyle nPushButtonStyle) {
m_nPushButtonStyle = nPushButtonStyle;
RedrawButton();
}
AFX_INLINE void CXTPButton::SetTextAlignment(DWORD dwAlignment) {
ModifyStyle(BS_LEFT | BS_CENTER | BS_RIGHT | BS_TOP | BS_BOTTOM | BS_VCENTER, dwAlignment);
RedrawButton();
}
AFX_INLINE int CXTPButton::GetImageAlignment() const {
return m_nImageAlignment;
}
AFX_INLINE void CXTPButton::SetImageAlignment(DWORD dwAlignment) {
m_nImageAlignment = dwAlignment;
RedrawButton();
}
AFX_INLINE XTPButtonTextImageRelation CXTPButton::GetTextImageRelation() const {
return (XTPButtonTextImageRelation)m_nTextImageRelation;
}
AFX_INLINE void CXTPButton::SetTextImageRelation(XTPButtonTextImageRelation realtion) {
m_nTextImageRelation = realtion;
RedrawButton();
}
AFX_INLINE long CXTPButton::GetImageGap() const {
return m_nImageGap;
}
AFX_INLINE void CXTPButton::SetImageGap(int nImageGap) {
m_nImageGap = nImageGap;
}
AFX_INLINE CXTPImageManagerIcon* CXTPButton::GetIcon() const {
return m_pIcon;
}
AFX_INLINE XTPGroupBoxBorderStyle CXTPButton::GetBorderStyle() const {
return (XTPGroupBoxBorderStyle)m_nBorderStyle;
}
AFX_INLINE void CXTPButton::SetBorderStyle(XTPGroupBoxBorderStyle style) {
m_nBorderStyle = style;
}
AFX_INLINE BOOL CXTPButton::GetShowFocus() const {
return m_bShowFocus;
}
AFX_INLINE void CXTPButton::SetShowFocus(BOOL bShowFocus) {
m_bShowFocus = bShowFocus;
}
AFX_INLINE void CXTPButton::RedrawButton(BOOL bUpdateWindow) {
if (m_hWnd) Invalidate(FALSE);
if (m_hWnd && bUpdateWindow) UpdateWindow();
}
AFX_INLINE CXTPMarkupContext* CXTPButton::GetMarkupContext() const {
return m_pMarkupContext;
}
AFX_INLINE CXTPMarkupUIElement* CXTPButton::GetMarkupUIElement() {
return m_pUIElement;
}
AFX_INLINE BOOL CXTPButton::IsDropDownStyle() const {
return m_nPushButtonStyle == xtpButtonDropDown || m_nPushButtonStyle == xtpButtonDropDownRight || m_nPushButtonStyle == xtpButtonSplitDropDown || m_nPushButtonStyle == xtpButtonDropDownNoGlyph;
}
AFX_INLINE void CXTPButton::SetTooltip(LPCTSTR lpszTooltip) {
m_strTooltip = lpszTooltip;
}
AFX_INLINE CString CXTPButton::GetTooltip() const {
return m_strTooltip;
}
AFX_INLINE CXTPToolTipContext* CXTPButton::GetToolTipContext() const {
return m_pToolTipContext;
}
AFX_INLINE CXTPButtonTheme* CXTPButton::GetTheme() {
return m_pTheme;
}
#endif // #if !defined(__XTPBUTTON_H__)