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

对话框与窗口

开发平台:

Visual C++

  1. // XTPControlComboBoxExt.h
  2. //
  3. // This file is a part of the XTREME COMMANDBARS 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. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTPCONTROLCOMBOBOXEXT_H__)
  22. #define __XTPCONTROLCOMBOBOXEXT_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. //-----------------------------------------------------------------------
  28. // Summary:
  29. //     The XTP_FN_SETFORMAT notification sent by CXTPControlFontComboBox to set current RichEdit selection format
  30. // Example:
  31. //     Here is an example of how an application would process the XTP_FN_SETFORMAT
  32. //     message.
  33. // <code>
  34. // BEGIN_MESSAGE_MAP(CApplicationView, CRichEditView)
  35. //     //{{AFX_MSG_MAP(CApplicationView)
  36. //     ON_NOTIFY(XTP_FN_SETFORMAT, ID_EDIT_SIZE, OnSetCharFormat)
  37. //     //}}AFX_MSG_MAP
  38. // END_MESSAGE_MAP()
  39. //
  40. // void CApplicationView::OnSetCharFormat(NMHDR* pNMHDR, LRESULT* pResult)
  41. // {
  42. //     CHARFORMAT& cf = ((NMXTPCHARHDR*)pNMHDR)->cf;
  43. //     SetCharFormat(cf);
  44. //     *pResult = 1;
  45. // }
  46. // </code>
  47. // See Also: XTP_FN_GETFORMAT, CXTPControlFontComboBox
  48. //-----------------------------------------------------------------------
  49. const UINT XTP_FN_SETFORMAT    = 0x1000;
  50. //-----------------------------------------------------------------------
  51. // Summary:
  52. //     The XTP_FN_GETFORMAT notification sent by CXTPControlFontComboBox to get current RichEdit selection format
  53. // Example:
  54. //     Here is an example of how an application would process the XTP_FN_GETFORMAT
  55. //     message.
  56. // <code>
  57. // BEGIN_MESSAGE_MAP(CApplicationView, CRichEditView)
  58. //     //{{AFX_MSG_MAP(CApplicationView)
  59. //     ON_NOTIFY(XTP_FN_GETFORMAT, ID_EDIT_SIZE, OnGetCharFormat)
  60. //     //}}AFX_MSG_MAP
  61. // END_MESSAGE_MAP()
  62. //
  63. // void CApplicationView::OnGetCharFormat(NMHDR* pNMHDR, LRESULT* pResult)
  64. // {
  65. //     CHARFORMAT& cf = ((NMXTPCHARHDR*)pNMHDR)->cf;
  66. //     cf = GetCharFormatSelection();
  67. //     *pResult = 1;
  68. // }
  69. // </code>
  70. // See Also: XTP_FN_SETFORMAT, CXTPControlFontComboBox
  71. //-----------------------------------------------------------------------
  72. const UINT XTP_FN_GETFORMAT    = 0x1001;
  73. //-----------------------------------------------------------------------
  74. // Summary:
  75. //     Structure used as parameter for XTP_FN_SETFORMAT and XTP_FN_GETFORMAT messages.
  76. // Example: See Example of XTP_FN_SETFORMAT
  77. // See Also: XTP_FN_SETFORMAT, XTP_FN_GETFORMAT, CXTPControlFontComboBox
  78. //-----------------------------------------------------------------------
  79. struct NMXTPCHARHDR : public NMXTPCONTROL
  80. {
  81. //{{AFX_CODEJOCK_PRIVATE
  82. //-------------------------------------------------------------------------
  83. // Summary:
  84. //     Constructs a NMXTPCHARHDR object
  85. //-------------------------------------------------------------------------
  86. NMXTPCHARHDR() {cf.cbSize = sizeof(CHARFORMAT);}
  87. //}}AFX_CODEJOCK_PRIVATE
  88. CHARFORMAT cf;          // Character formatting in a rich edit control.
  89. };
  90. //===========================================================================
  91. // Summary:
  92. //     CXTPControlSizeComboBox is a CXTPControlComboBox derived class. It
  93. //     represents the size picker.
  94. //===========================================================================
  95. class _XTP_EXT_CLASS CXTPControlSizeComboBox : public CXTPControlComboBox
  96. {
  97. DECLARE_XTP_CONTROL(CXTPControlSizeComboBox)
  98. public:
  99. //-----------------------------------------------------------------------
  100. // Summary:
  101. //     Constructs a CXTPControlSizeComboBox object
  102. //-----------------------------------------------------------------------
  103. CXTPControlSizeComboBox();
  104. //-----------------------------------------------------------------------
  105. // Summary:
  106. //     Destroys a CXTPControlSizeComboBox object, handles cleanup
  107. //     and deallocation
  108. //-----------------------------------------------------------------------
  109. virtual ~CXTPControlSizeComboBox();
  110. public:
  111. //-----------------------------------------------------------------------
  112. // Summary:
  113. //     Call this method to set the current size.
  114. // Parameters:
  115. //     nTwips - Size, in twips, to be set
  116. //-----------------------------------------------------------------------
  117. void SetTwipSize(int nTwips);
  118. //-----------------------------------------------------------------------
  119. // Summary:
  120. //     This method is called to convert string to twip size
  121. // Parameters:
  122. //     lpszText - String contains twips number
  123. //-----------------------------------------------------------------------
  124. static int AFX_CDECL GetTwipSize(LPCTSTR lpszText);
  125. //-----------------------------------------------------------------------
  126. // Summary:
  127. //     This method is called to convert twips to string
  128. // Parameters:
  129. //     nTwips - twips number to convert
  130. //-----------------------------------------------------------------------
  131. static CString AFX_CDECL TwipsToPointString(int nTwips);
  132. protected:
  133. //-----------------------------------------------------------------------
  134. // Summary:
  135. //     This method is called to popup the control.
  136. // Parameters:
  137. //     bPopup - TRUE to set popup.
  138. // Returns:
  139. //     TRUE if successful; otherwise returns FALSE.
  140. //-----------------------------------------------------------------------
  141. virtual BOOL OnSetPopup(BOOL bPopup);
  142. //-----------------------------------------------------------------------
  143. // Summary:
  144. //     Call this method to retrieve the current user selected size.
  145. // Returns:
  146. //     The current size.
  147. //-----------------------------------------------------------------------
  148. int GetTwipSize() const;
  149. //-----------------------------------------------------------------------
  150. // Summary:
  151. //     This method is called when the control is executed.
  152. //-----------------------------------------------------------------------
  153. virtual void OnExecute();
  154. private:
  155. void EnumFontSizes(CDC& dc, LPCTSTR pFontName);
  156. static BOOL CALLBACK AFX_EXPORT EnumSizeCallBack(LOGFONT FAR* /*lplf*/,
  157. LPNEWTEXTMETRIC lpntm, int FontType, LPVOID lpv);
  158. void InsertSize(int nSize);
  159. private:
  160. int m_nLogVert;
  161. int m_nTwipsLast;
  162. };
  163. //===========================================================================
  164. // Summary:
  165. //     CXTPControlFontComboBoxList is a CXTPControlComboBoxList derived
  166. //     class. It represents the font picker popup.
  167. //===========================================================================
  168. class _XTP_EXT_CLASS CXTPControlFontComboBoxList : public CXTPControlComboBoxList
  169. {
  170. DECLARE_XTP_COMMANDBAR(CXTPControlFontComboBoxList)
  171. public:
  172. //{{AFX_CODEJOCK_PRIVATE
  173. class _XTP_EXT_CLASS CFontDesc
  174. {
  175. public:
  176. CFontDesc(LPCTSTR lpszName, LPCTSTR lpszScript, BYTE nCharSet,
  177. BYTE nPitchAndFamily, DWORD dwFlags);
  178. CString m_strName;
  179. CString m_strScript;
  180. BYTE m_nCharSet;
  181. BYTE m_nPitchAndFamily;
  182. DWORD m_dwFlags;
  183. };
  184. class _XTP_EXT_CLASS CFontDescHolder
  185. {
  186. public:
  187. static BOOL CALLBACK AFX_EXPORT EnumFamScreenCallBack(
  188. ENUMLOGFONT* pelf, NEWTEXTMETRICEX* /*lpntm*/, int FontType,
  189. LPVOID pThis);
  190. static BOOL CALLBACK AFX_EXPORT EnumFamScreenCallBackEx(
  191. ENUMLOGFONTEX* pelf, NEWTEXTMETRICEX* /*lpntm*/, int FontType,
  192. LPVOID pThis);
  193. void AddFont(ENUMLOGFONT* pelf, DWORD dwType, LPCTSTR lpszScript = NULL);
  194. void EnumFontFamilies();
  195. ~CFontDescHolder()
  196. {
  197. for (int i = 0; i < m_arrayFontDesc.GetSize(); i++)
  198. delete m_arrayFontDesc[i];
  199. }
  200. public:
  201. CArray<CFontDesc*, CFontDesc*> m_arrayFontDesc;
  202. };
  203. //}}AFX_CODEJOCK_PRIVATE
  204. protected:
  205. //-----------------------------------------------------------------------
  206. // Summary:
  207. //     Reads or writes this object from or to an archive.
  208. // Parameters:
  209. //     pPX - A CXTPPropExchange object to serialize to or from.
  210. //----------------------------------------------------------------------
  211. virtual void DoPropExchange(CXTPPropExchange* pPX);
  212. //-----------------------------------------------------------------------
  213. // Summary:
  214. //     Call this method to make a copy of the command bar.
  215. // Parameters:
  216. //     pCommandBar - Command bar needed to be copied.
  217. //     bRecursive - TRUE to copy recursively.
  218. //-----------------------------------------------------------------------
  219. void Copy(CXTPCommandBar* pCommandBar, BOOL bRecursive = FALSE);
  220. //-----------------------------------------------------------------------
  221. // Summary:
  222. //     Creates a list box.
  223. //-----------------------------------------------------------------------
  224. void CreateListBox();
  225. public:
  226. //-----------------------------------------------------------------------
  227. // Summary:
  228. //     This method is called to add all fonts to list.
  229. // Parameters:
  230. //     dwStyleListBox - Flags to be used in EnumFontFamiliesEx. Currently not supported.
  231. //-----------------------------------------------------------------------
  232. void EnumFontFamiliesEx(BOOL dwStyleListBox = 1);
  233. protected:
  234. DWORD m_dwStyleListBox;     // Style of the control.
  235. private:
  236. friend class CXTPControlFontComboBox;
  237. };
  238. //===========================================================================
  239. // Summary:
  240. //     CXTPControlFontComboBox is a CXTPControlComboBox derived class. It
  241. //     represents the font picker control.
  242. //===========================================================================
  243. class _XTP_EXT_CLASS CXTPControlFontComboBox : public CXTPControlComboBox
  244. {
  245. DECLARE_XTP_CONTROL(CXTPControlFontComboBox)
  246. public:
  247. //-----------------------------------------------------------------------
  248. // Summary:
  249. //     Constructs a CXTPControlFontComboBox object
  250. // Parameters:
  251. //     dwStyleListBox - Flags to be used in list box. Currently not supported, must be default.
  252. //-----------------------------------------------------------------------
  253. CXTPControlFontComboBox(DWORD dwStyleListBox = 1);
  254. //-----------------------------------------------------------------------
  255. // Summary:
  256. //     Destroys a CXTPControl object, handles cleanup and deallocation
  257. //-----------------------------------------------------------------------
  258. virtual ~CXTPControlFontComboBox();
  259. public:
  260. //-----------------------------------------------------------------------
  261. // Summary:
  262. //     Call this method to set current font of the picker.
  263. // Parameters:
  264. //     cf - CHARFORMAT structure contains information about character
  265. //          formatting in a rich edit control.
  266. //-----------------------------------------------------------------------
  267. void SetCharFormat(CHARFORMAT& cf);
  268. protected:
  269. //-----------------------------------------------------------------------
  270. // Summary:
  271. //     This method is called when the control is executed.
  272. //-----------------------------------------------------------------------
  273. virtual void OnExecute();
  274. };
  275. #endif //#if !defined(__XTPCONTROLCOMBOBOXEXT_H__)