XFloorWndCtl.h
上传用户:zhout2004
上传日期:2007-01-02
资源大小:218k
文件大小:7k
源码类别:

ActiveX/DCOM/ATL

开发平台:

Visual C++

  1. /************************************
  2.   REVISION LOG ENTRY
  3.   Revision By: Mihai Filimon
  4.   Revised on 10/8/98 3:51:16 PM
  5.   Comments: XFloorWndCtl.h : Declaration of the CXFloorWndCtrl ActiveX Control class.
  6.   CXFloorWndCtrl : See XFloorWndCtl.cpp for implementation.
  7.  ************************************/
  8. #if !defined(AFX_XFLOORWNDCTL_H__24FFD1FB_5EA9_11D2_86B1_0040055C08D9__INCLUDED_)
  9. #define AFX_XFLOORWNDCTL_H__24FFD1FB_5EA9_11D2_86B1_0040055C08D9__INCLUDED_
  10. #if _MSC_VER >= 1000
  11. #pragma once
  12. #endif // _MSC_VER >= 1000
  13. #include <afxtempl.h>
  14. #include "FloorPageObject.h"
  15. #include "TLabelComboBox.h" // Added by ClassView
  16. #define ID_LABELCOMBO 0x3E81
  17. #define ID_LABEL 0x3E82
  18. #define defaultRGBBkGnd RGB(128,128,128)
  19. #define MessageChange _T("FWM_ACTIVATEPAGE")// wParam contain last active page
  20. // lParam contain the curently active page
  21. #define MulSleep 2
  22. #define IDTIMERERASEFOCUS 1000
  23. #define UPDATEIDTIMERERASEFOCUS 48
  24. #define IDSTARTMOVELABEL 1001
  25. #define UPDATEIDSTARTMOVELABEL 48
  26. #define _OBEJCTISSAFETY
  27. #ifdef _OBEJCTISSAFETY
  28. #include <objsafe.h>
  29. #endif
  30. class CFloorLabelObject;
  31. typedef CArray<CFloorPageObject*, CFloorPageObject*> CArrayPage;
  32. class CXFloorWndCtrl : public COleControl
  33. {
  34. DECLARE_DYNCREATE(CXFloorWndCtrl)
  35. friend class CFloorPageObject;
  36. friend class CFloorObject;
  37. friend class CFloorLevelObject;
  38. // Constructor
  39. public:
  40. #ifdef _OBEJCTISSAFETY
  41. //interface IObjectSafety
  42. BEGIN_INTERFACE_PART(ObjectSafety, IObjectSafety)
  43. STDMETHOD(GetInterfaceSafetyOptions)(REFIID riid, DWORD __RPC_FAR *pdwSupportedOptions, DWORD __RPC_FAR *pdwEnabledOptions);
  44. STDMETHOD(SetInterfaceSafetyOptions)(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions);
  45. END_INTERFACE_PART(ObjectSafety)
  46. DECLARE_INTERFACE_MAP()
  47. //interface IObjectSafety
  48. #endif //_OBEJCTISSAFETY
  49. virtual BOOL ActivatePage(LPCTSTR lpszPageName);
  50. virtual BOOL ActivatePage(int nIndex);
  51. virtual BOOL DeletePage(LPCTSTR lpszPageName);
  52. virtual BOOL DeletePage(int nIndex);
  53. CXFloorWndCtrl();
  54. virtual void RecalcLayout();
  55. virtual BOOL PullDownPages(int nIndex);
  56. virtual BOOL PullUpPages(int nIndex);
  57. // Overrides
  58. // ClassWizard generated virtual function overrides
  59. //{{AFX_VIRTUAL(CXFloorWndCtrl)
  60. public:
  61. virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid);
  62. virtual void DoPropExchange(CPropExchange* pPX);
  63. virtual void OnResetState();
  64. virtual void OnFontChanged();
  65. virtual void OnBackColorChanged();
  66. protected:
  67. virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
  68. //}}AFX_VIRTUAL
  69. // Implementation
  70. protected:
  71. static CRect m_rtBorder;
  72. int m_nDYLabel, m_nDYCombo;
  73. void PrepareChangeStyle();
  74. CTLabelComboBox m_lbPage;
  75. CComboBox m_cbPage;
  76. virtual CFloorPageObject* NewPage(BOOL bAsPage, LPCTSTR lpszPageName);
  77. virtual void Move(int nIndex, BOOL bDown = TRUE);
  78. int PtrPageToIndex(CFloorPageObject* pPage);
  79. CFloorPageObject* m_pActivePage;
  80. CArrayPage* m_pArPage;
  81. static CFloorPageObject* m_pFocusPage;
  82. ~CXFloorWndCtrl();
  83. DECLARE_OLECREATE_EX(CXFloorWndCtrl)    // Class factory and guid
  84. DECLARE_OLETYPELIB(CXFloorWndCtrl)      // GetTypeInfo
  85. DECLARE_PROPPAGEIDS(CXFloorWndCtrl)     // Property page IDs
  86. DECLARE_OLECTLTYPE(CXFloorWndCtrl) // Type name and misc status
  87. // Message maps
  88. //{{AFX_MSG(CXFloorWndCtrl)
  89. afx_msg void OnSize(UINT nType, int cx, int cy);
  90. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  91. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  92. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  93. afx_msg void OnTimer(UINT nIDEvent);
  94. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  95. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  96. //}}AFX_MSG
  97. DECLARE_MESSAGE_MAP()
  98. // Dispatch maps
  99. //{{AFX_DISPATCH(CXFloorWndCtrl)
  100. BOOL m_bAnimation;
  101. afx_msg void OnAnimationChanged();
  102. long m_nSleep;
  103. afx_msg void OnSleepChanged();
  104. BOOL m_bSign;
  105. afx_msg void OnSignChanged();
  106. CString m_sPages;
  107. afx_msg void OnPagesChanged();
  108. BOOL m_bAsPage;
  109. afx_msg void OnAsPageChanged();
  110. afx_msg short _AddPage(LPCTSTR sName);
  111. afx_msg BOOL _DeletePage(short nIndex);
  112. afx_msg BSTR _GetPageName(short nIndex);
  113. afx_msg short _GetPage(LPCTSTR lpszPageName);
  114. afx_msg BOOL _ActivatePage(short nIndex);
  115. afx_msg BOOL _AttachWindow(short nIndex, long pWnd);
  116. afx_msg BOOL _SetPageName(short nIndex, LPCTSTR lpszPageName);
  117. afx_msg void _Init();
  118. afx_msg short _GetActivePage();
  119. afx_msg long _GetPagesCount();
  120. afx_msg BOOL _IsPage(short nIndex);
  121. afx_msg long _GetLeftTopPage(short nIndex);
  122. afx_msg long _GetBottomRightPage(short nIndex);
  123. afx_msg void StyleAs(BOOL bAsFloor);
  124. afx_msg long GetHWnd(long nIndex);
  125. afx_msg short GetHeight(short nIndex);
  126. afx_msg void SetHeight(short nIndex, short nNewValue);
  127. afx_msg OLE_COLOR GetColor(short nIndex);
  128. afx_msg void SetColor(short nIndex, OLE_COLOR nNewValue);
  129. afx_msg long GetUserData(short nIndex);
  130. afx_msg void SetUserData(short nIndex, long nNewValue);
  131. //}}AFX_DISPATCH
  132. DECLARE_DISPATCH_MAP()
  133. afx_msg void AboutBox();
  134. // Event maps
  135. //{{AFX_EVENT(CXFloorWndCtrl)
  136. void FireActivatePage(short nIndex)
  137. {FireEvent(eventidActivatePage,EVENT_PARAM(VTS_I2), nIndex);}
  138. void FireClickOnActivePage(short nIndex)
  139. {FireEvent(eventidClickOnActivePage,EVENT_PARAM(VTS_I2), nIndex);}
  140. //}}AFX_EVENT
  141. DECLARE_EVENT_MAP()
  142. // Dispatch and event IDs
  143. public:
  144. virtual int Lookup(CFloorLabelObject* pLabelObject);
  145. virtual CTLabelComboBox* GetLabelControl();
  146. virtual CComboBox* GetComboBox();
  147. static UINT m_nMessageChange;
  148. virtual CFloorPageObject* GetPageFromPoint(CPoint point);
  149. virtual CRect GetRectClient();
  150. virtual CFloorPageObject*  GetActivePage();
  151. static BOOL RegClassFloorWnd();
  152. virtual void OnActivatePage(CFloorPageObject* pPage);
  153. virtual CFloorPageObject* AddPage(LPCTSTR lpszPageName, int* pIndex = NULL);
  154. int GetCountPage();
  155. virtual CFloorPageObject* GetPage(LPCTSTR lpszPageName);
  156. virtual CFloorPageObject* GetPage(int nIndex);
  157. enum {
  158. //{{AFX_DISP_ID(CXFloorWndCtrl)
  159. dispidAnimation = 1L,
  160. dispidSleep = 2L,
  161. dispidSign = 3L,
  162. dispidPages = 4L,
  163. dispidAsPage = 5L,
  164. dispidAddPage = 6L,
  165. dispidDeletePage = 7L,
  166. dispidGetPageName = 8L,
  167. dispidGetPage = 9L,
  168. dispidActivatePage = 10L,
  169. dispidAttachWindow = 11L,
  170. dispidSetPageName = 12L,
  171. dispidInit = 13L,
  172. dispidHeight = 21L,
  173. dispidColor = 22L,
  174. dispidUserData = 23L,
  175. dispidGetActivePage = 14L,
  176. dispidGetPagesCount = 15L,
  177. dispidIsPage = 16L,
  178. dispidGetLeftTopPage = 17L,
  179. dispidGetBottomRightPage = 18L,
  180. dispidStyleAs = 19L,
  181. dispidGetHWnd = 20L,
  182. eventidActivatePage = 1L,
  183. eventidClickOnActivePage = 2L,
  184. //}}AFX_DISP_ID
  185. };
  186. private:
  187. void RefreshFontLabel(COleControl* pControl);
  188. CRect ChangeHeightLabel(CSize s);
  189. CRect m_rectClient;
  190. CBitmap* Preview(CWnd* pWnd = NULL);
  191. static void SetFont(CWnd *pWindow, COleControl *pControlSource);
  192. };
  193. //{{AFX_INSERT_LOCATION}}
  194. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  195. #endif // !defined(AFX_XFLOORWNDCTL_H__24FFD1FB_5EA9_11D2_86B1_0040055C08D9__INCLUDED)