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

对话框与窗口

开发平台:

Visual C++

  1. // Custom Items.h : header file
  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. #pragma once
  21. class CCustomItemIcon : public CXTPPropertyGridItem
  22. {
  23. public:
  24. CCustomItemIcon(CString strCaption, HICON hIcon = 0);
  25. ~CCustomItemIcon(void);
  26. protected:
  27. virtual BOOL OnDrawItemValue(CDC& dc, CRect rcValue);
  28. virtual void OnInplaceButtonDown(CXTPPropertyGridInplaceButton* pButton);
  29. private:
  30. HICON m_hIcon;
  31. };
  32. class CCustomItemSpin;
  33. class CCustomItemSpinInplaceButton : public CSpinButtonCtrl
  34. {
  35. friend class CCustomItemSpin;
  36. CCustomItemSpin* m_pItem;
  37. DECLARE_MESSAGE_MAP()
  38. public:
  39. afx_msg void OnDeltapos(NMHDR *pNMHDR, LRESULT *pResult);
  40. };
  41. class CCustomItemSpin : public CXTPPropertyGridItemNumber
  42. {
  43. friend class CCustomItemSpinInplaceButton;
  44. public:
  45. CCustomItemSpin(CString strCaption);
  46. protected:
  47. virtual void OnDeselect();
  48. virtual void OnSelect();
  49. virtual CRect GetValueRect();
  50. private:
  51. CCustomItemSpinInplaceButton m_wndSpin;
  52. };
  53. class CCustomItemEdit : public CXTPPropertyGridItem
  54. {
  55. public:
  56. CCustomItemEdit(CString strCaption, CString strValue)
  57. : CXTPPropertyGridItem(strCaption, strValue)
  58. {
  59. m_nFlags = xtpGridItemHasComboButton|xtpGridItemHasEdit;
  60. GetConstraints()->AddConstraint(_T("<Edit...>"));
  61. }
  62. protected:
  63. virtual void OnValueChanged(CString strValue) 
  64. {
  65. if (strValue == _T("<Edit...>"))
  66. {
  67. AfxMessageBox(_T("Show Edit Dialog Box"));
  68. }
  69. else
  70. {
  71. CXTPPropertyGridItem::OnValueChanged(strValue);
  72. }
  73. }
  74. };
  75. class CCustomItemFileBox : public CXTPPropertyGridItem
  76. {
  77. public:
  78. CCustomItemFileBox(CString strCaption);
  79. protected:
  80. virtual void OnInplaceButtonDown(CXTPPropertyGridInplaceButton* pButton);
  81. };
  82. class CCustomItemCheckBox;
  83. class CInplaceCheckBox : public CButton
  84. {
  85. public:
  86. afx_msg LRESULT OnCheck(WPARAM wParam, LPARAM lParam);
  87. afx_msg HBRUSH CtlColor(CDC* pDC, UINT /*nCtlColor*/);
  88. DECLARE_MESSAGE_MAP()
  89. protected:
  90. CCustomItemCheckBox* m_pItem;
  91. COLORREF m_clrBack;
  92. CBrush m_brBack;
  93. friend class CCustomItemCheckBox;
  94. };
  95. class CCustomItemCheckBox : public CXTPPropertyGridItem
  96. {
  97. protected:
  98. public:
  99. CCustomItemCheckBox(CString strCaption);
  100. BOOL GetBool();
  101. void SetBool(BOOL bValue);
  102. protected:
  103. virtual void OnDeselect();
  104. virtual void OnSelect();
  105. virtual CRect GetValueRect();
  106. virtual BOOL OnDrawItemValue(CDC& dc, CRect rcValue);
  107. virtual BOOL IsValueChanged();
  108. private:
  109. CInplaceCheckBox m_wndCheckBox;
  110. BOOL m_bValue;
  111. friend class CInplaceCheckBox;
  112. };
  113. class CCustomItemChilds : public CXTPPropertyGridItem
  114. {
  115. class CCustomItemChildsAll;
  116. class CCustomItemChildsPad;
  117. friend class CCustomItemChildsAll;
  118. friend class CCustomItemChildsPad;
  119. public:
  120. CCustomItemChilds(CString strCaption, CRect rcValue);
  121. protected:
  122. virtual void OnAddChildItem();
  123. virtual void SetValue(CString strValue);
  124. private:
  125. void UpdateChilds();
  126. CString RectToString(CRect rc);
  127. private:
  128. CCustomItemChildsAll* m_itemAll;
  129. CCustomItemChildsPad* m_itemLeft;
  130. CCustomItemChildsPad* m_itemTop;
  131. CCustomItemChildsPad* m_itemRight;
  132. CCustomItemChildsPad* m_itemBottom;
  133. CRect m_rcValue;
  134. };
  135. class CCustomItemColor: public CXTPPropertyGridItemColor
  136. {
  137. public:
  138. CCustomItemColor(CString strCaption,  COLORREF clr = 0);
  139. protected:
  140. virtual void OnInplaceButtonDown(CXTPPropertyGridInplaceButton* pButton);
  141. #ifndef _DECIMAL_VALUE
  142. public:
  143. COLORREF StringToRGB(CString str)
  144. {
  145. TCHAR *stopstring;
  146. int nValue = _tcstoul((LPCTSTR)str, &stopstring, 16);
  147. return RGB(GetBValue(nValue), GetGValue(nValue), GetRValue(nValue));
  148. }
  149. CString RGBToString(COLORREF clr)
  150. {
  151. CString str;
  152. str.Format(_T("%2X%2X%2X"), GetRValue(clr), GetGValue(clr), GetBValue(clr));
  153. #if _MSC_VER < 1200 // MFC 5.0
  154. for (int i = 0; i < str.GetLength(); i++) if (str[i] == _T(' ')) str.SetAt(i, _T('0'));
  155. #else
  156. str.Replace(_T(" "), _T("0"));
  157. #endif
  158. return str;
  159. }
  160. void SetValue(CString strValue)
  161. {
  162. SetColor(StringToRGB(strValue));
  163. }
  164. void SetColor(COLORREF clr)
  165. {
  166. m_clrValue = clr;
  167. CXTPPropertyGridItem::SetValue(RGBToString(clr));
  168. }
  169. #endif
  170. };
  171. //////////////////////////////////////////////////////////////////////////
  172. class CInplaceUpperCase : public CXTPPropertyGridInplaceEdit
  173. {
  174. public:
  175. afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
  176. DECLARE_DYNAMIC(CInplaceUpperCase);
  177. DECLARE_MESSAGE_MAP()
  178. };
  179. class CCustomItemUpperCase : public CXTPPropertyGridItem
  180. {
  181. public:
  182. CCustomItemUpperCase::CCustomItemUpperCase(CString strCaption)
  183. : CXTPPropertyGridItem(strCaption)
  184. {
  185. }
  186. protected:
  187. virtual CXTPPropertyGridInplaceEdit& GetInplaceEdit()
  188. {
  189. return m_wndEdit;
  190. }
  191. private:
  192. CInplaceUpperCase m_wndEdit;
  193. };
  194. class CCustomItemIPAddress : public CXTPPropertyGridItem
  195. {
  196. class CInplaceEditIPAddress : public CXTPPropertyGridInplaceEdit
  197. {
  198. public:
  199. BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
  200. {
  201. if (!CWnd::Create(WC_IPADDRESS, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext))
  202. return FALSE;
  203. ModifyStyle(WS_BORDER, 0);
  204. ModifyStyleEx(WS_EX_CLIENTEDGE, 0, SWP_FRAMECHANGED);
  205. return TRUE;
  206. }
  207. };
  208. public:
  209. CCustomItemIPAddress::CCustomItemIPAddress(CString strCaption)
  210. : CXTPPropertyGridItem(strCaption)
  211. {
  212. }
  213. protected:
  214. virtual CXTPPropertyGridInplaceEdit& GetInplaceEdit()
  215. {
  216. return m_wndEdit;
  217. }
  218. private:
  219. CInplaceEditIPAddress m_wndEdit;
  220. };
  221. class CCustomItemMenu : public CXTPPropertyGridItem
  222. {
  223. public:
  224. CCustomItemMenu::CCustomItemMenu(CString strCaption)
  225. : CXTPPropertyGridItem(strCaption)
  226. {
  227. SetFlags(xtpGridItemHasEdit | xtpGridItemHasComboButton);
  228. }
  229. virtual void OnInplaceButtonDown(CXTPPropertyGridInplaceButton* pButton);
  230. };
  231. class CCustomItemSlider;
  232. class CInplaceSlider : public CSliderCtrl
  233. {
  234. public:
  235. afx_msg HBRUSH CtlColor(CDC* pDC, UINT /*nCtlColor*/);
  236. afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
  237. DECLARE_MESSAGE_MAP()
  238. protected:
  239. CCustomItemSlider* m_pItem;
  240. COLORREF m_clrBack;
  241. CBrush m_brBack;
  242. int m_nValue;
  243. friend class CCustomItemSlider;
  244. };
  245. class CCustomItemSlider : public CXTPPropertyGridItemNumber
  246. {
  247. protected:
  248. public:
  249. CCustomItemSlider(CString strCaption);
  250. protected:
  251. virtual void OnDeselect();
  252. virtual void OnSelect();
  253. private:
  254. CInplaceSlider m_wndSlider;
  255. int m_nWidth;
  256. friend class CInplaceSlider;
  257. };
  258. class CCustomItemButton;
  259. class CInplaceButton : public CXTButton
  260. {
  261. public:
  262. DECLARE_MESSAGE_MAP()
  263. protected:
  264. CCustomItemButton* m_pItem;
  265. void OnClicked();
  266. BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  267. friend class CCustomItemButton;
  268. };
  269. class CCustomItemButton : public CXTPPropertyGridItem
  270. {
  271. protected:
  272. public:
  273. CCustomItemButton(CString strCaption, BOOL bFullRowButton, BOOL bValue);
  274. BOOL GetBool();
  275. void SetBool(BOOL bValue);
  276. protected:
  277. virtual BOOL IsValueChanged();
  278. virtual void SetVisible(BOOL bVisible);
  279. BOOL OnDrawItemValue(CDC& dc, CRect rcValue);
  280. virtual void OnIndexChanged();
  281. void CreateButton();
  282. private:
  283. CInplaceButton m_wndButton;
  284. BOOL m_bValue;
  285. CFont m_wndFont;
  286. CString m_strButtonText;
  287. BOOL m_bFullRowButton;
  288. friend class CInplaceButton;
  289. };