XTPMarkupButton.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:5k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPMarkupButton.h: interface for the CXTPMarkupButton class.
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #if !defined(__XTPMARKUPBUTTON_H__)
  21. #define __XTPMARKUPBUTTON_H__
  22. #if _MSC_VER > 1000
  23. #pragma once
  24. #endif // _MSC_VER > 1000
  25. #include "XTPMarkupControl.h"
  26. #include "Common/XTPWinThemeWrapper.h"
  27. class CXTPMarkupBrush;
  28. class CXTPMarkupBuilder;
  29. class _XTP_EXT_CLASS CXTPMarkupButtonBase : public CXTPMarkupContentControl
  30. {
  31. DECLARE_MARKUPCLASS(CXTPMarkupButtonBase);
  32. protected:
  33. CXTPMarkupButtonBase();
  34. protected:
  35. void OnMouseLeave(CXTPMarkupMouseEventArgs* e);
  36. void OnMouseEnter(CXTPMarkupMouseEventArgs* e);
  37. void OnMouseLeftButtonUp(CXTPMarkupMouseButtonEventArgs* e);
  38. void OnMouseLeftButtonDown(CXTPMarkupMouseButtonEventArgs* e);
  39. void OnLostMouseCapture(CXTPMarkupMouseEventArgs* e);
  40. public:
  41. BOOL IsPressed() const;
  42. protected:
  43. void SetPressed(BOOL bPressed);
  44. protected:
  45. virtual void OnClick();
  46. protected:
  47. BOOL m_bPushed;
  48. BOOL m_bMouseOver;
  49. CXTPWinThemeWrapper m_themeButton;
  50. public:
  51. static CXTPMarkupDependencyProperty* m_pIsPressedProperty;
  52. static CXTPMarkupRoutedEvent* m_pClickEvent;
  53. };
  54. class _XTP_EXT_CLASS CXTPMarkupButton : public CXTPMarkupButtonBase
  55. {
  56. DECLARE_MARKUPCLASS(CXTPMarkupButton);
  57. protected:
  58. CXTPMarkupButton();
  59. virtual ~CXTPMarkupButton();
  60. protected:
  61. void OnRender(CXTPMarkupDrawingContext* pDC);
  62. void OnRenderFocusVisual(CXTPMarkupDrawingContext* drawingContext);
  63. CSize ArrangeOverride(CSize szFinalSize);
  64. CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
  65. public:
  66. };
  67. class _XTP_EXT_CLASS CXTPMarkupToggleButton : public CXTPMarkupButtonBase
  68. {
  69. DECLARE_MARKUPCLASS(CXTPMarkupToggleButton);
  70. public:
  71. void SetChecked(BOOL bChecked);
  72. BOOL GetChecked() const;
  73. BOOL IsThreeState() const;
  74. protected:
  75. virtual void OnClick();
  76. virtual void OnToggle();
  77. virtual void OnChecked(CXTPMarkupRoutedEventArgs* e);
  78. virtual void OnUnchecked(CXTPMarkupRoutedEventArgs* e);
  79. virtual void OnIndeterminate(CXTPMarkupRoutedEventArgs* e);
  80. protected:
  81. static void AFX_CDECL OnIsCheckedChanged(CXTPMarkupObject* d, CXTPMarkupPropertyChangedEventArgs* e);
  82. static CXTPMarkupObject* AFX_CDECL ConvertIsChecked(CXTPMarkupContext* pContext, CXTPMarkupObject* pObject);
  83. public:
  84. static CXTPMarkupDependencyProperty* m_pIsThreeStateProperty;
  85. static CXTPMarkupDependencyProperty* m_pIsCheckedProperty;
  86. static CXTPMarkupRoutedEvent* m_pCheckedEvent;
  87. static CXTPMarkupRoutedEvent* m_pUncheckedEvent;
  88. static CXTPMarkupRoutedEvent* m_pIndeterminateEvent;
  89. };
  90. class _XTP_EXT_CLASS CXTPMarkupCheckBox : CXTPMarkupToggleButton
  91. {
  92. DECLARE_MARKUPCLASS(CXTPMarkupCheckBox);
  93. protected:
  94. CXTPMarkupCheckBox();
  95. ~CXTPMarkupCheckBox();
  96. void OnRender(CXTPMarkupDrawingContext* pDC);
  97. void OnRenderFocusVisual(CXTPMarkupDrawingContext* drawingContext);
  98. CSize ArrangeOverride(CSize szFinalSize);
  99. CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
  100. };
  101. class _XTP_EXT_CLASS CXTPMarkupRadioButton : CXTPMarkupToggleButton
  102. {
  103. DECLARE_MARKUPCLASS(CXTPMarkupRadioButton);
  104. protected:
  105. CXTPMarkupRadioButton();
  106. ~CXTPMarkupRadioButton();
  107. protected:
  108. void OnRender(CXTPMarkupDrawingContext* pDC);
  109. void OnRenderFocusVisual(CXTPMarkupDrawingContext* drawingContext);
  110. CSize ArrangeOverride(CSize szFinalSize);
  111. CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
  112. protected:
  113. void OnToggle();
  114. void OnChecked(CXTPMarkupRoutedEventArgs* e);
  115. private:
  116. void UpdateRadioButtonGroup();
  117. };
  118. AFX_INLINE void CXTPMarkupToggleButton::SetChecked(BOOL bChecked) {
  119. SetValue(m_pIsCheckedProperty, CXTPMarkupEnum::CreateValue(bChecked));
  120. }
  121. AFX_INLINE BOOL CXTPMarkupToggleButton::GetChecked() const {
  122. CXTPMarkupEnum* pValue = MARKUP_STATICCAST(CXTPMarkupEnum, GetValue(m_pIsCheckedProperty));
  123. return pValue != NULL ? (BOOL)(int)*pValue : FALSE;
  124. }
  125. AFX_INLINE BOOL CXTPMarkupToggleButton::IsThreeState() const {
  126. CXTPMarkupBool* pValue = MARKUP_STATICCAST(CXTPMarkupBool, GetValue(m_pIsThreeStateProperty));
  127. return pValue != NULL ? (BOOL)*pValue : FALSE;
  128. }
  129. AFX_INLINE BOOL CXTPMarkupButtonBase::IsPressed() const {
  130. CXTPMarkupBool* pValue = MARKUP_STATICCAST(CXTPMarkupBool, GetValue(m_pIsPressedProperty));
  131. return pValue ? (BOOL)*pValue : FALSE;
  132. }
  133. #endif // !defined(__XTPMARKUPBUTTON_H__)