MacButtons.h
上传用户:zhenhuadz
上传日期:2007-01-07
资源大小:1511k
文件大小:9k
源码类别:

远程控制编程

开发平台:

Visual C++

  1. #if !defined(AFX_MACBUTTONS_H__B9D2AA55_ABF4_11D3_90F4_0020AFBC499D__INCLUDED_)
  2. #define AFX_MACBUTTONS_H__B9D2AA55_ABF4_11D3_90F4_0020AFBC499D__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. /////////////////////////////////////////////////////////////////////////////
  7. //
  8. // MacButtons.h : header file
  9. //
  10. // Feel free to modifiy and/or distribute this file, but
  11. // do not remove this header.
  12. //
  13. // I would appreciate a notification of any bugs discovered or 
  14. // improvements that could be made.
  15. //
  16. // This file is provided "as is" with no expressed or implied warranty.
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #define CHECKBOX_HEIGHT 12
  20. #define TYPE_STANDARD 0
  21. #define TYPE_CHECKBOX 1
  22. #define TYPE_RADIO 2
  23. #define TYPE_MORE 3
  24. #define IMAGE_EFFECT_NONE 0
  25. #define IMAGE_EFFECT_RAISED 1
  26. #define IMAGE_EFFECT_SUNKEN 2
  27. #define CHECK_STYLE_CHECK 0
  28. #define CHECK_STYLE_CROSS 1
  29. /////////////////////////////////////////////////////////////////////////////
  30. //
  31. // CMacButton class, version 2.0
  32. //
  33. // Copyright (c) 1999 Paul Meidinger (pmmeidinger@yahoo.com)
  34. //
  35. // History:
  36. // PMM 12/13/1999 Initial implementation.
  37. //
  38. // PMM 12/29/1999 Minor changes made.
  39. //
  40. /////////////////////////////////////////////////////////////////////////////
  41. class CMacButton : public CButton
  42. {
  43. // Construction
  44. public:
  45. CMacButton();
  46. // Attributes
  47. public:
  48. // Operations
  49. public:
  50. void SetCheck(int nCheck); // Sets the button's checked state
  51. int GetCheck() const; // Gets the button's checked state
  52. void SetBold(BOOL bBold = TRUE); // Sets the button's bold flag
  53. BOOL GetBold() const; // Gets the button's bold flag
  54. // Overrides
  55. // ClassWizard generated virtual function overrides
  56. //{{AFX_VIRTUAL(CMacButton)
  57. public:
  58. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  59. protected:
  60. virtual void PreSubclassWindow();
  61. //}}AFX_VIRTUAL
  62. // Implementation
  63. public:
  64. void SetImageEffect(int nEffect); // Sets the image effect
  65. HICON SetIcon(HICON hIcon); // Sets the button's icon
  66. HBITMAP SetBitmap(HBITMAP hBitmap); // Sets the button's bitmap
  67. virtual ~CMacButton();
  68. // Generated message map functions
  69. protected:
  70. //{{AFX_MSG(CMacButton)
  71. afx_msg void OnSysColorChange();
  72. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  73. //}}AFX_MSG
  74. DECLARE_MESSAGE_MAP()
  75. protected:
  76. BOOL m_bBold;
  77. int m_nCheckStyle;
  78. int m_nImageEffect;
  79. int m_nType;
  80. void DrawButton(LPDRAWITEMSTRUCT lpDIS);
  81. void DrawCheckBox(CDC *pDC, CRect rect, UINT nStyle, UINT nState);
  82. void DrawRadioButton(CDC *pDC, CRect rect, UINT nStyle, UINT nState);
  83. void DrawPushLikeButton(CDC *pDC, const CRect &rect, UINT nStyle, UINT nState);
  84. void DrawPressedPushButton(CDC *pDC, const CRect &rect);
  85. void DrawUnpressedPushButton(CDC *pDC, const CRect &rect);
  86. void DrawCornerShadows(CDC *pDC, const CRect &rect);
  87. void DrawImage(CDC *pDC, CRect &rect, UINT nStyle, UINT nState);
  88. void DrawButtonText(CDC *pDC, CRect &rect, const CString &sText, UINT nStyle, UINT nState);
  89. HBITMAP GetDitherBitmap(CDC *pDC, COLORREF crColor1, COLORREF crColo2);
  90. CRect GetCheckRect(const CRect &rect, UINT nStyle);
  91. void RedrawCheck();
  92. COLORREF LightenColor(COLORREF crColor, BYTE byIncreaseVal);
  93. COLORREF DarkenColor(COLORREF crColor, BYTE byReduceVal);
  94. CSize m_sizeImage;
  95. HICON m_hIcon;
  96. HBITMAP m_hBitmap;
  97. BOOL m_bMouseDown;
  98. int m_nCheck;
  99. void CreatePens();
  100. void DeletePens();
  101. CPen m_penHilight;
  102. CPen m_penFace;
  103. CPen m_penLiteFace;
  104. CPen m_penLiteShadow;
  105. CPen m_penShadow;
  106. CPen m_penDkShadow;
  107. CPen m_penDarkDkShadow;
  108. void GetColors();
  109. COLORREF m_crHilight;
  110. COLORREF m_crLiteFace;
  111. COLORREF m_crFace;
  112. COLORREF m_crLiteShadow;
  113. COLORREF m_crShadow;
  114. COLORREF m_crDkShadow;
  115. COLORREF m_crDarkDkShadow;
  116. private:
  117. void DrawStandardButton(CDC *pDC, const CRect &rect, UINT nStyle, UINT nState);
  118. };
  119. /////////////////////////////////////////////////////////////////////////////
  120. //
  121. // CMacCheckBox class, version 2.0
  122. //
  123. // Copyright (c) 1999, 2000 Paul M. Meidinger (pmmeidinger@yahoo.com)
  124. //
  125. // Thanks to:
  126. // Eric Hwang <erichw@21cn.com>
  127. // For fixing the problem that was not sending a message
  128. // to the parent when the button was clicked.
  129. //
  130. // History:
  131. // PMM 12/13/1999 Initial implementation.
  132. //
  133. // PMM 12/17/1999 Modified drawing code to use a memory DC. 
  134. // Added CPen member variables in an attempt to 
  135. // speed up drawing. Made other minor changes.
  136. //
  137. // PMM 12/29/1999 Fixed a bug that would not send a message to the parent
  138. // when the button was clicked (fix by Eric Hwang). Added
  139. // code to draw a push-like button when that style is used.
  140. //
  141. /////////////////////////////////////////////////////////////////////////////
  142. class CMacCheckBox : public CMacButton
  143. {
  144. // Construction
  145. public:
  146. CMacCheckBox();
  147. // Attributes
  148. public:
  149. // Operations
  150. public:
  151. // Overrides
  152. // ClassWizard generated virtual function overrides
  153. //{{AFX_VIRTUAL(CMacCheckBox)
  154. public:
  155. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  156. protected:
  157. //}}AFX_VIRTUAL
  158. // Implementation
  159. public:
  160. void SetCheckStyle(int nStyle = CHECK_STYLE_CHECK); // Sets the check style
  161. int GetCheckStyle() const; // Gets the check style
  162. virtual ~CMacCheckBox();
  163. // Generated message map functions
  164. protected:
  165. //{{AFX_MSG(CMacCheckBox)
  166. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  167. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  168. afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
  169. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  170. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  171. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  172. //}}AFX_MSG
  173. DECLARE_MESSAGE_MAP()
  174. };
  175. /////////////////////////////////////////////////////////////////////////////
  176. //
  177. // CMacRadioButton class, version 2.0
  178. //
  179. // Copyright (c) 1999, 2000 Paul M. Meidinger (pmmeidinger@yahoo.com)
  180. //
  181. // Thanks to:
  182. // Eric Hwang <erichw@21cn.com>
  183. // For fixing the problem that was not sending a message
  184. // to the parent when the button was clicked.
  185. //
  186. // History:
  187. // PMM 12/13/1999 Initial implementation.
  188. //
  189. // PMM 12/17/1999 Modified drawing code to use a memory DC. 
  190. // Added CPen member variables in an attempt to 
  191. // speed up drawing. Made other minor changes.
  192. //
  193. // PMM 12/29/1999 Fixed a bug that was not checking the radio
  194. // and unchecking others when the space bar is pressed.
  195. // Fixed a bug that would not send a message to the parent
  196. // when the button was clicked (fix by Eric Hwang). Added
  197. // code to draw a push-like button when that style is used.
  198. //
  199. /////////////////////////////////////////////////////////////////////////////
  200. class CMacRadioButton : public CMacButton
  201. {
  202. // Construction
  203. public:
  204. CMacRadioButton();
  205. // Attributes
  206. public:
  207. // Operations
  208. public:
  209. // Overrides
  210. // ClassWizard generated virtual function overrides
  211. //{{AFX_VIRTUAL(CMacRadioButton)
  212. public:
  213. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  214. virtual BOOL PreTranslateMessage(MSG* pMsg);
  215. protected:
  216. //}}AFX_VIRTUAL
  217. // Implementation
  218. public:
  219. virtual ~CMacRadioButton();
  220. // Generated message map functions
  221. protected:
  222. //{{AFX_MSG(CMacRadioButton)
  223. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  224. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  225. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  226. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  227. afx_msg void OnSysColorChange();
  228. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  229. afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
  230. afx_msg void OnSetFocus(CWnd* pOldWnd);
  231. //}}AFX_MSG
  232. DECLARE_MESSAGE_MAP()
  233. private:
  234. void UncheckOtherRadios();
  235. };
  236. /////////////////////////////////////////////////////////////////////////////
  237. //
  238. // CMacMoreButton class, version 2.0
  239. //
  240. // Copyright (c) 2000 Paul M. Meidinger (pmmeidinger@yahoo.com)
  241. //
  242. // History:
  243. // PMM 1/21/2000 Initial implementation.
  244. //
  245. /////////////////////////////////////////////////////////////////////////////
  246. #define ALIGN_TEXT_LEFT 0
  247. #define ALIGN_TEXT_RIGHT 1
  248. class CMacMoreButton : public CMacButton
  249. {
  250. // Construction
  251. public:
  252. CMacMoreButton();
  253. // Attributes
  254. public:
  255. // Operations
  256. public:
  257. // Overrides
  258. // ClassWizard generated virtual function overrides
  259. //{{AFX_VIRTUAL(CMacMoreButton)
  260. public:
  261. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  262. protected:
  263. virtual void PreSubclassWindow();
  264. //}}AFX_VIRTUAL
  265. // Implementation
  266. public:
  267. void SetTextAlign(int nAlign); // Sets the text alignment
  268. BOOL GetMoreShown() const; // Gets the flag specifying whether "more" is shown
  269. void SetColor(COLORREF crColor); // Sets the button color
  270. virtual ~CMacMoreButton();
  271. // Generated message map functions
  272. protected:
  273. BOOL m_bDoEffect;
  274. //{{AFX_MSG(CMacMoreButton)
  275. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  276. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  277. //}}AFX_MSG
  278. DECLARE_MESSAGE_MAP()
  279. private:
  280. int m_nAlignText;
  281. BOOL m_bMoreShown;
  282. BOOL m_bMouseDown;
  283. };
  284. /////////////////////////////////////////////////////////////////////////////
  285. //{{AFX_INSERT_LOCATION}}
  286. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  287. #endif // !defined(AFX_MACBUTTONS_H__B9D2AA55_ABF4_11D3_90F4_0020AFBC499D__INCLUDED_)