XPropertiesWndCtl.h
上传用户:yangzi5763
上传日期:2007-01-02
资源大小:239k
文件大小:12k
源码类别:

ActiveX/DCOM/ATL

开发平台:

Visual C++

  1. /************************************
  2.   REVISION LOG ENTRY
  3.   Revision By: Mihai Filimon
  4.   Revised on 10/13/98 2:22:54 PM
  5.   Comments: XPropertiesWndCtl.h : Declaration of the CXPropertiesWndCtrl ActiveX Control class.
  6.  ************************************/
  7. #if !defined(AFX_XPROPERTIESWNDCTL_H__7B914A69_6271_11D2_86B8_0040055C08D9__INCLUDED_)
  8. #define AFX_XPROPERTIESWNDCTL_H__7B914A69_6271_11D2_86B8_0040055C08D9__INCLUDED_
  9. #include "XFloorPropertiesWnd.h" // Added by ClassView
  10. #if _MSC_VER >= 1000
  11. #pragma once
  12. #endif // _MSC_VER >= 1000
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CXPropertiesWndCtrl : See XPropertiesWndCtl.cpp for implementation.
  15. #include <afxtempl.h>
  16. #define IDXFLOORWND 0
  17. #define IDNCOMBOBOX 0
  18. #define defaultRGBBkGndProp ::GetSysColor(COLOR_APPWORKSPACE)
  19. #define _OBEJCTISSAFETY
  20. #ifdef _OBEJCTISSAFETY
  21. #include <objsafe.h>
  22. #endif //_OBEJCTISSAFETY
  23. #include "_utils.h"
  24. class CXPropertiesWndCtrl : public COleControl
  25. {
  26. friend class CPageListCtrl;
  27. friend class CXFloorPropertiesWnd;
  28. friend class CControlsWnd;
  29. friend class CControlsWnd_CEdit;
  30. friend class CControlsWnd_CComboBox;
  31. friend class CControlsWnd_CADORComboBox;
  32. friend class CControlsWnd_CBoolComboBox;
  33. friend class CControlsWnd_CUserComboBox;
  34. friend class CControlsWnd_CButton;
  35. friend class CControlsWnd_CFont;
  36. friend class CADORMultiColumnComboBox;
  37. friend class CControlsWnd_CNComboBox;
  38. friend class CControlsWnd_CNADORComboBox;
  39. DECLARE_DYNCREATE(CXPropertiesWndCtrl)
  40. // Constructor
  41. public:
  42. #ifdef _OBEJCTISSAFETY
  43. //interface IObjectSafety
  44. BEGIN_INTERFACE_PART(ObjectSafety, IObjectSafety)
  45. STDMETHOD(GetInterfaceSafetyOptions)(REFIID riid, DWORD __RPC_FAR *pdwSupportedOptions, DWORD __RPC_FAR *pdwEnabledOptions);
  46. STDMETHOD(SetInterfaceSafetyOptions)(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions);
  47. END_INTERFACE_PART(ObjectSafety)
  48. DECLARE_INTERFACE_MAP()
  49. //interface IObjectSafety
  50. #endif //_OBEJCTISSAFETY
  51. CXPropertiesWndCtrl();
  52. virtual CPageListCtrl* GetListCtrl(int nIndexPage, int nIndexProperty);
  53. // Overrides
  54. // ClassWizard generated virtual function overrides
  55. //{{AFX_VIRTUAL(CXPropertiesWndCtrl)
  56. public:
  57. virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid);
  58. virtual void DoPropExchange(CPropExchange* pPX);
  59. virtual void OnResetState();
  60. virtual BOOL PreTranslateMessage(MSG* pMsg);
  61. virtual void OnFontChanged();
  62. //}}AFX_VIRTUAL
  63. // Implementation
  64. protected:
  65. COLORREF m_rgbEditColor;
  66. CFontHolder m_itemFont;
  67. // Added to notify change font
  68. BEGIN_INTERFACE_PART(ItemFontNotify, IPropertyNotifySink)
  69. INIT_INTERFACE_PART(CXPropertiesWndCtrl, ItemFontNotify)
  70. STDMETHOD(OnChanged)(DISPID);
  71. STDMETHOD(OnRequestEdit)(DISPID);
  72. END_INTERFACE_PART(ItemFontNotify)
  73. // End
  74. virtual CString GetPropertyName(LPCTSTR lpszPathPropertyName);
  75. virtual CString GetPageName(LPCTSTR lpszPathPropertyName);
  76. virtual void OnActivatePage(short nIndexPage);
  77. virtual BOOL OnInit();
  78. CXFloorPropertiesWnd m_xFloorWnd;
  79. ~CXPropertiesWndCtrl();
  80. DECLARE_OLECREATE_EX(CXPropertiesWndCtrl)    // Class factory and guid
  81. DECLARE_OLETYPELIB(CXPropertiesWndCtrl)      // GetTypeInfo
  82. DECLARE_PROPPAGEIDS(CXPropertiesWndCtrl)     // Property page IDs
  83. DECLARE_OLECTLTYPE(CXPropertiesWndCtrl) // Type name and misc status
  84. // Message maps
  85. //{{AFX_MSG(CXPropertiesWndCtrl)
  86. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  87. afx_msg void OnSize(UINT nType, int cx, int cy);
  88. afx_msg void OnSetFocus(CWnd* pOldWnd);
  89. afx_msg void OnDestroy();
  90. //}}AFX_MSG
  91. DECLARE_MESSAGE_MAP()
  92. DECLARE_EVENTSINK_MAP( )
  93. // Dispatch maps
  94. //{{AFX_DISPATCH(CXPropertiesWndCtrl)
  95. CString m_sPagesAndItems;
  96. afx_msg void OnPagesAndItemsChanged();
  97. BOOL m_bAutoResizingColumns;
  98. afx_msg void OnResizingColumnsChanged();
  99. BOOL m_bSignEnableDisable;
  100. afx_msg void OnSignEnableDisableChanged();
  101. BOOL m_bToolTips;
  102. afx_msg void OnToolTipsChanged();
  103. BOOL m_bFirstPageHasCaption;
  104. afx_msg void OnFirstPageHasCaptionChanged();
  105. BOOL m_bAsFloor;
  106. afx_msg void OnAsFloorChanged();
  107. BOOL m_bResizeFirstColumn;
  108. afx_msg void OnResizeFirstColumnChanged();
  109. BOOL m_bAnimation;
  110. afx_msg void OnAnimationChanged();
  111. afx_msg LPFONTDISP GetItemFont();
  112. afx_msg void SetItemFont(LPFONTDISP newValue);
  113. afx_msg long _GetPagesCount();
  114. afx_msg short _AddPage(LPCTSTR lpszPageName);
  115. afx_msg BOOL _DeletePage(short nIndexPage);
  116. afx_msg BSTR _GetPageName(short nIndexPage);
  117. afx_msg short _GetPage(LPCTSTR lpszPageName);
  118. afx_msg void _ActivatePage(short nIndexPage);
  119. afx_msg short _InsertProperty(short nIndexPage, short nIndexProperty, LPCTSTR lpszPropertyName, LPCTSTR lpszPropertyAs, short lpszProperyType);
  120. afx_msg BOOL _DeleteProperty(short nIndexPage, short nIndexProperty);
  121. afx_msg BSTR _GetPropertyName(short nIndexPage, short nIndexProperty);
  122. afx_msg short _GetPropertyType(short nIndexPage, short nIndexProperty);
  123. afx_msg void _SetPropertyType(short nIndexPage, short nIndexProperty, short nNewType);
  124. afx_msg BSTR _GetPropertyAs(short nIndexPage, short nIndexProperty);
  125. afx_msg BOOL _IsProperty(short nIndexPage, short nIndexProperty);
  126. afx_msg long _GetIDListCtrl(short nIndexPage);
  127. afx_msg short _GetActivePage();
  128. afx_msg LPUNKNOWN _GetxFloorWnd();
  129. afx_msg BOOL _GetDefaultValue(short nIndexPage, short nIndexProperty, BSTR FAR* sPropertyValue);
  130. afx_msg BOOL _SetDefaultValue(short nIndexPage, short nIndexProperty, LPCTSTR lpszDefaultvalue);
  131. afx_msg short _GetPropertyCount(short nIndexPage);
  132. afx_msg void _SetPropertyName(short nIndexPage, short nIndexProperty, LPCTSTR lpszProperyName);
  133. afx_msg BOOL _GetPropertyIndex(LPCTSTR lpszPropertyName, short FAR* nIndexPage, short FAR* nIndexProperty);
  134. afx_msg BOOL _SetDefaultValueByName(LPCTSTR lpszPropertyName, LPCTSTR lpszPropertyValue);
  135. afx_msg BSTR _GetDefaultValueByName(LPCTSTR lpszPropertyName);
  136. afx_msg short _GetActiveProperty(short FAR* nIndexPage);
  137. afx_msg BOOL _SetActiveProperty(short nIndexPage, short IndexProperty);
  138. afx_msg BOOL _SetActivePropertyByName(LPCTSTR lpszPropertyName);
  139. afx_msg BOOL _DeletePropertyByName(LPCTSTR lpszPropertyName);
  140. afx_msg short _AddProperty(LPCTSTR lpszPropertyName, LPCTSTR lpszPropertyAs, short nPropertyType);
  141. afx_msg void _Init();
  142. afx_msg void RefreshProperty(short nIndexPage, short nIndexProperty);
  143. afx_msg VARIANT GetValue(short nIndexPage, short nIndexProperty, long nColumn);
  144. afx_msg VARIANT GetValueByName(LPCTSTR lpszPropertyName, long nColumn);
  145. afx_msg void SetValue(short nIndexPage, short nIndexProperty, const VARIANT FAR& vValue, short nColumn);
  146. afx_msg void Check();
  147. afx_msg LPDISPATCH GetNComboObject(long nIndexPage, long nIndexProperty);
  148. afx_msg long GetColumnKey(short nIndexPage, short nIndexProperty);
  149. afx_msg void SetColumnKey(short nIndexPage, short nIndexProperty, long nNewValue);
  150. afx_msg long GetColumnWidth(short nIndexPage, short nIndexProperty, short nColumn);
  151. afx_msg void SetColumnWidth(short nIndexPage, short nIndexProperty, short nColumn, long nNewValue);
  152. afx_msg BSTR GetColumnName(short nIndexPage, short nIndexProperty, short nColumn);
  153. afx_msg void SetColumnName(short nIndexPage, short nIndexProperty, short nColumn, LPCTSTR lpszNewValue);
  154. afx_msg BOOL GetColumnHeader(short nIndexPage, short nIndexProperty);
  155. afx_msg void SetColumnHeader(short nIndexPage, short nIndexProperty, BOOL bNewValue);
  156. afx_msg double GetDropDownWidth(short nIndexPage, short nIndexProperty);
  157. afx_msg void SetDropDownWidth(short nIndexPage, short nIndexProperty, double newValue);
  158. afx_msg long GetDropDownHeight(short nIndexPage, short nIndexProperty);
  159. afx_msg void SetDropDownHeight(short nIndexPage, short nIndexProperty, long nNewValue);
  160. afx_msg BSTR GetColumnKeyByName(short nIndexPage, short nIndexProperty);
  161. afx_msg void SetColumnKeyByName(short nIndexPage, short nIndexProperty, LPCTSTR lpszNewValue);
  162. //}}AFX_DISPATCH
  163. DECLARE_DISPATCH_MAP()
  164. afx_msg void AboutBox();
  165. // Event maps
  166. //{{AFX_EVENT(CXPropertiesWndCtrl)
  167. void FireSelectItem(short nIndexPage, short nIndexItem)
  168. {FireEvent(eventidSelectItem,EVENT_PARAM(VTS_I2  VTS_I2), nIndexPage, nIndexItem);}
  169. void FireSelectPage(short nIndex)
  170. {FireEvent(eventidSelectPage,EVENT_PARAM(VTS_I2), nIndex);}
  171. void FireUnselectItem(short nIndexPage, short nIndexItem)
  172. {FireEvent(eventidUnselectItem,EVENT_PARAM(VTS_I2  VTS_I2), nIndexPage, nIndexItem);}
  173. void FirePropertyChanging(short nIndexPage, short nIndexProperty)
  174. {FireEvent(eventidPropertyChanging,EVENT_PARAM(VTS_I2  VTS_I2), nIndexPage, nIndexProperty);}
  175. void FirePropertyChanged(short nIndexPage, short nIndexProperty, BOOL bUpdate)
  176. {FireEvent(eventidPropertyChanged,EVENT_PARAM(VTS_I2  VTS_I2  VTS_BOOL), nIndexPage, nIndexProperty, bUpdate);}
  177. void FireButtonClick(short nIndexPage, short nIndexProperty)
  178. {FireEvent(eventidButtonClick,EVENT_PARAM(VTS_I2  VTS_I2), nIndexPage, nIndexProperty);}
  179. void FireLoadItems(short nIndexPage, short nIndexProperty, BSTR FAR* lpszItems)
  180. {FireEvent(eventidLoadItems,EVENT_PARAM(VTS_I2  VTS_I2  VTS_PBSTR), nIndexPage, nIndexProperty, lpszItems);}
  181. void FireSetObject(long nIndexPage, long nIndexProperty, LPDISPATCH FAR* pObject)
  182. {FireEvent(eventidSetObject,EVENT_PARAM(VTS_I4  VTS_I4  VTS_PDISPATCH), nIndexPage, nIndexProperty, pObject);}
  183. void FireDelete(short nIndexPage, short nIndexProperty)
  184. {FireEvent(eventidDelete,EVENT_PARAM(VTS_I2  VTS_I2), nIndexPage, nIndexProperty);}
  185. //}}AFX_EVENT
  186. DECLARE_EVENT_MAP()
  187. // Dispatch and event IDs
  188. public:
  189. virtual void OnBackColorChanged( );
  190. enum {
  191. //{{AFX_DISP_ID(CXPropertiesWndCtrl)
  192. dispidPagesAndItems = 1L,
  193. dispidAutoResizingColumns = 2L,
  194. dispidSignEnableDisable = 3L,
  195. dispidToolTips = 4L,
  196. dispidFirstPageHasCaption = 5L,
  197. dispidItemFont = 9L,
  198. dispidAsFloor = 6L,
  199. dispidResizeFirstColumn = 7L,
  200. dispidAnimation = 8L,
  201. dispidGetPagesCount = 10L,
  202. dispidAddPage = 11L,
  203. dispidDeletePage = 12L,
  204. dispidGetPageName = 13L,
  205. dispidGetPage = 14L,
  206. dispidActivatePage = 15L,
  207. dispidInsertProperty = 16L,
  208. dispidDeleteProperty = 17L,
  209. dispidGetPropertyName = 18L,
  210. dispidGetPropertyType = 19L,
  211. dispidSetPropertyType = 20L,
  212. dispidGetPropertyAs = 21L,
  213. dispidIsProperty = 22L,
  214. dispidGetIDListCtrl = 23L,
  215. dispidGetActivePage = 24L,
  216. dispidGetxFloorWnd = 25L,
  217. dispidGetDefaultValue = 26L,
  218. dispidSetDefaultValue = 27L,
  219. dispidGetPropertyCount = 28L,
  220. dispidSetPropertyName = 29L,
  221. dispidGetPropertyIndex = 30L,
  222. dispidSetDefaultValueByName = 31L,
  223. dispidGetDefaultValueByName = 32L,
  224. dispidGetActiveProperty = 33L,
  225. dispidSetActiveProperty = 34L,
  226. dispidSetActivePropertyByName = 35L,
  227. dispidDeletePropertyByName = 36L,
  228. dispidAddProperty = 37L,
  229. dispidInit = 38L,
  230. dispidColumnKey = 45L,
  231. dispidColumnWidth = 46L,
  232. dispidColumnName = 47L,
  233. dispidColumnHeader = 48L,
  234. dispidDropDownWidth = 49L,
  235. dispidDropDownHeight = 50L,
  236. dispidRefreshProperty = 39L,
  237. dispidGetValue = 40L,
  238. dispidGetValueByName = 41L,
  239. dispidColumnKeyByName = 51L,
  240. dispidSetValue = 42L,
  241. dispidCheck = 43L,
  242. dispidGetNComboObject = 44L,
  243. eventidSelectItem = 1L,
  244. eventidSelectPage = 2L,
  245. eventidUnselectItem = 3L,
  246. eventidPropertyChanging = 4L,
  247. eventidPropertyChanged = 5L,
  248. eventidButtonClick = 6L,
  249. eventidLoadItems = 7L,
  250. eventidSetObject = 8L,
  251. eventidDelete = 9L,
  252. //}}AFX_DISP_ID
  253. };
  254. protected:
  255. virtual void KillAllControls();
  256. TMapPg2TMapIdx2Ctrl m_mapPg2CtrlCreated;
  257. private:
  258. void ResetMAPFound();
  259. BOOL AlreadyFound(LPCTSTR lpszPropertyName, short* lLow, short* lHigh);
  260. void AppendSearch(LPCTSTR lpszPropertyName, short lLow, short lHigh);
  261. CMapStringToOb m_mapSearch;
  262. };
  263. //{{AFX_INSERT_LOCATION}}
  264. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  265. #endif // !defined(AFX_XPROPERTIESWNDCTL_H__7B914A69_6271_11D2_86B8_0040055C08D9__INCLUDED)