SwitcherButton.h
上传用户:sdpcwz
上传日期:2009-12-14
资源大小:1237k
文件大小:3k
源码类别:

书籍源码

开发平台:

Visual C++

  1. #if !defined(AFX_SWITCHERBUTTON_H__91B9D502_D8DB_11D2_9FDF_D79776C64A53__INCLUDED_)
  2. #define AFX_SWITCHERBUTTON_H__91B9D502_D8DB_11D2_9FDF_D79776C64A53__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. // SwitcherButton.h
  7. //
  8. // Programmed by: JIMMY BRUSH (Kathy007@email.msn.com)
  9. // 
  10. // Legal:
  11. //
  12. // THIS CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.
  13. // You may use and distribute this code provided that you do not
  14. // remove this title header and that you do not charge money for
  15. // it. If you want to update the code, feel free to do so, as long
  16. // as you *mark your changes* in code AND in the revision log below
  17. // (and send it to me ;)
  18. #define SWITCHBUTTON_UP 0
  19. #define SWITCHBUTTON_DOWN 1
  20. #define SWITCHBUTTON_SELECTED 2
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CSwitcherButton window
  23. class CSwitcherButton : public CWnd
  24. {
  25. // Construction
  26. public:
  27. CSwitcherButton();
  28. // Attributes
  29. public:
  30. // Operations
  31. public:
  32. // Overrides
  33. // ClassWizard generated virtual function overrides
  34. //{{AFX_VIRTUAL(CSwitcherButton)
  35. //}}AFX_VIRTUAL
  36. // Implementation
  37. public:
  38. CFont m_fNormal;
  39. CFont m_fBold;
  40. void Unselect();
  41. void Select();
  42. CWnd* m_wndParent;
  43. int m_iID;
  44. void Refresh();
  45. void ReplaceIcon(HICON icon);
  46. void SetText(CString text);
  47. HICON m_iIcon;
  48. BOOL DoCreate(CWnd* parent, int x, int y, int cx, int cy, CString text = "");
  49. bool HasCapture;
  50. UINT m_nState;
  51. virtual ~CSwitcherButton();
  52. // Generated message map functions
  53. protected:
  54. //{{AFX_MSG(CSwitcherButton)
  55. afx_msg void OnPaint();
  56. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  57. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  58. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  59. //}}AFX_MSG
  60. DECLARE_MESSAGE_MAP()
  61. };
  62. /////////////////////////////////////////////////////////////////////////////
  63. //{{AFX_INSERT_LOCATION}}
  64. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  65. #endif // !defined(AFX_SWITCHERBUTTON_H__91B9D502_D8DB_11D2_9FDF_D79776C64A53__INCLUDED_)
  66. #ifndef _MEMDC_H_
  67. #define _MEMDC_H_
  68. //////////////////////////////////////////////////
  69. // CMemDC - memory DC
  70. //
  71. // Author: Keith Rule
  72. // Email:  keithr@europa.com
  73. // Copyright 1996-1997, Keith Rule
  74. //
  75. // You may freely use or modify this code provided this
  76. // Copyright is included in all derived versions.
  77. //
  78. // This class implements a memory Device Context
  79. class CMemDC : public CDC {
  80. private:
  81. CBitmap* m_bitmap;
  82. CBitmap* m_oldBitmap;
  83. CDC* m_pDC;
  84. CRect m_rcBounds;
  85. public:
  86. CMemDC(CDC* pDC, const CRect& rcBounds) : CDC()
  87. {
  88. CreateCompatibleDC(pDC);
  89. m_bitmap = new CBitmap;
  90. m_bitmap->CreateCompatibleBitmap(pDC, rcBounds.Width(), rcBounds.Height());
  91. m_oldBitmap = SelectObject(m_bitmap);
  92. m_pDC = pDC;
  93. m_rcBounds = rcBounds;
  94. }
  95. ~CMemDC() 
  96. {
  97. m_pDC->BitBlt(m_rcBounds.left, m_rcBounds.top, m_rcBounds.Width(), m_rcBounds.Height(), 
  98. this, m_rcBounds.left, m_rcBounds.top, SRCCOPY);
  99. SelectObject(m_oldBitmap);
  100. if (m_bitmap != NULL) delete m_bitmap;
  101. }
  102. CMemDC* operator->() {
  103. return this;
  104. }
  105. };
  106. #endif