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

对话框与窗口

开发平台:

Visual C++

  1. // XTTipWindow.h interface for the CXTTipWindow class.
  2. //
  3. // This file is a part of the XTREME CONTROLS 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(__XTTIPWINDOW_H__)
  22. #define __XTTIPWINDOW_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. const DWORD TWS_XT_THICKBORDER     = 0x0001;  //<ALIAS CXTTipWindow::ShowTipWindow@const CPoint&@DWORD@UINT@UINT@BOOL>
  28. const DWORD TWS_XT_DROPSHADOW      = 0x0002;  //<ALIAS CXTTipWindow::ShowTipWindow@const CPoint&@DWORD@UINT@UINT@BOOL>
  29. const DWORD TWS_XT_ALPHASHADOW     = 0x0004;  //<ALIAS CXTTipWindow::ShowTipWindow@const CPoint&@DWORD@UINT@UINT@BOOL>
  30. //===========================================================================
  31. // Summary:
  32. //     CXTTipWindow is a CWnd derived class. It is used to create a CXTTipWindow
  33. //     object. CXTTipWindow objects are tooltip style popup windows that can
  34. //     display useful information to the end user. Possible options include
  35. //     shadows, borders, and background color settings.
  36. //===========================================================================
  37. class _XTP_EXT_CLASS CXTTipWindow : public CWnd
  38. {
  39. public:
  40. //-----------------------------------------------------------------------
  41. // Summary:
  42. //     Constructs a CXTTipWindow object
  43. //-----------------------------------------------------------------------
  44. CXTTipWindow();
  45. //-----------------------------------------------------------------------
  46. // Summary:
  47. //     Destroys a CXTTipWindow object, handles cleanup and deallocation
  48. //-----------------------------------------------------------------------
  49. virtual ~CXTTipWindow();
  50. public:
  51. //-----------------------------------------------------------------------
  52. // Summary:
  53. //     Call this member function to create the tooltip window.
  54. // Parameters:
  55. //     pParentWnd - Points to the parent of the tooltip window.
  56. // Returns:
  57. //     TRUE if successful, otherwise returns FALSE.
  58. //-----------------------------------------------------------------------
  59. virtual BOOL Create(CWnd* pParentWnd);
  60. public:
  61. //-----------------------------------------------------------------------
  62. // Summary:
  63. //     Call this member function to offset the tip window by the distance
  64. //     specified by pointOffset.
  65. // Parameters:
  66. //     pointOffset - A CPoint object that represents the x, y offset.
  67. //-----------------------------------------------------------------------
  68. void SetTipOffsetPos(CPoint pointOffset);
  69. //-----------------------------------------------------------------------
  70. // Summary:
  71. //     Call this member function to hide the tip window
  72. //-----------------------------------------------------------------------
  73. void HideTipWindow();
  74. //-----------------------------------------------------------------------
  75. // Summary:
  76. //     Call this member function to set the text tab stop positions for the
  77. //     tooltip window.
  78. // Parameters:
  79. //     pnTabStopPositions - pointer to integer array containing the tab
  80. //                          stop positions (could be a static array)
  81. //     nTabPositions      - number of array elements.
  82. //-----------------------------------------------------------------------
  83. void SetTextTabStopPositions(LPINT pnTabStopPositions, int nTabPositions);
  84. //-----------------------------------------------------------------------
  85. // Summary:
  86. //     This member function will set the text for the title and description
  87. //     values that are displayed in the tip window.
  88. // Parameters:
  89. //     lpszTitle   - A NULL terminated string that is to be displayed as the
  90. //                   title for the tip window.
  91. //     lpszDescrip - A NULL terminated string that is to be displayed as
  92. //                   the description text for the tip window.
  93. //     bRedraw     - If TRUE, the tip window will be redrawn.
  94. //-----------------------------------------------------------------------
  95. void SetTipText(LPCTSTR lpszTitle, LPCTSTR lpszDescrip, BOOL bRedraw = FALSE);
  96. //-----------------------------------------------------------------------
  97. // Summary:
  98. //     This member function will set the text and background colors for
  99. //     the tip window display.
  100. // Parameters:
  101. //     crBackColor - The RGB color value for the background of the tip window.
  102. //     crTextColor - The RGB color value for the text of the tip window.
  103. //     bRedraw     - If TRUE, the tip window will be redrawn.
  104. //-----------------------------------------------------------------------
  105. void SetTipColors(COLORREF crBackColor, COLORREF crTextColor, BOOL bRedraw = FALSE);
  106. // ------------------------------------------------------------------------------------
  107. // Summary:
  108. //     This member function will display a tip window to display a title
  109. //     and description text. Returns TRUE if the tip window was
  110. //     successfully created, otherwise returns FALSE.
  111. // Parameters:
  112. //     point -                The initial x and y coordinates of where the tip window
  113. //                            is to be displayed.
  114. //     rectCtrl -             Reference to a CRect object that represents the size of
  115. //                            the control window where the tip is displayed.
  116. //     pointMousePos -        Reference to a CPoint object that represents the x, y position
  117. //                            of the mouse cursor.
  118. //     dwTipStyle -           Initial style for the tip window. See the Remarks section
  119. //                            for the styles that can be used with the tip window.
  120. //     nDelay -               Specifies the delay value in milliseconds of when the tip
  121. //                            window should show.
  122. //     nElapse -              Specifies the time-out value in milliseconds of when the
  123. //                            tip window should close.
  124. //     bCenterHorz -          Set this parameter to 'true' to center the window
  125. //                            horizontally on the point passed in.
  126. //     bShowTipAtCursorPos -  TRUE to show the tip at the cursor position.
  127. // Remarks:
  128. //     Styles to be added or removed can be combined by using the bitwise
  129. //     OR (|) operator. It can be one or more of the following:<p/>
  130. //     * <b>TWS_XT_THICKBORDER</b> This style will cause the tip
  131. //           window to display a thick border around its edges.
  132. //     * <b>TWS_XT_DROPSHADOW</b> This style will cause the tip
  133. //           window to cast a shadow on the parent window.
  134. //     * <b>TWS_XT_ALPHASHADOW</b> Used with TWS_XT_DROPSHADOW
  135. //           to display an alpha style shadow. By default, mono shadowing is
  136. //           enabled.
  137. // ------------------------------------------------------------------------------------
  138. virtual BOOL ShowTipWindow(const CPoint& point, DWORD dwTipStyle = TWS_XT_DROPSHADOW, UINT nDelay = 0, UINT nElapse = 5000, BOOL bCenterHorz = FALSE);
  139. virtual BOOL ShowTipWindow(const CRect& rectCtrl, const CPoint& pointMousePos, DWORD dwTipStyle = TWS_XT_DROPSHADOW, UINT nDelay = 0, UINT nElapse = 5000, BOOL bCenterHorz = FALSE, BOOL bShowTipAtCursorPos = FALSE); //<combine CXTTipWindow::ShowTipWindow@const CPoint&@DWORD@UINT@UINT@BOOL>
  140. //-----------------------------------------------------------------------
  141. // Summary:
  142. //     This member function will set the text margins for the tip window.
  143. // Parameters:
  144. //     size - Initial size for the horizontal and vertical text margins.
  145. //-----------------------------------------------------------------------
  146. void SetMargins(CSize size);
  147. //-----------------------------------------------------------------------
  148. // Summary:
  149. //     This member function will set the line spacing for the tip window.
  150. // Parameters:
  151. //     nLineSpace - Initial size for text line spacing.
  152. //-----------------------------------------------------------------------
  153. void SetLineSpace(int nLineSpace);
  154. protected:
  155. //-----------------------------------------------------------------------
  156. // Summary:
  157. //     This member function will draw a shadow rect to the device context
  158. //     specified by 'pDC'.
  159. // Parameters:
  160. //     pDC  - Device context of the window to cast the shadow on.
  161. //     rect - Reference to a CRect object that represents the initial size of the shadow.
  162. //-----------------------------------------------------------------------
  163. void DrawShadowRect(CDC* pDC, const CRect& rect);
  164. //-----------------------------------------------------------------------
  165. // Summary:
  166. //     This member function will set the sizes for the tip window.
  167. // Parameters:
  168. //     point       - The x and y coordinates of where the tip window is to be displayed.
  169. //     bCenterHorz - Horizontal center the window position.
  170. //-----------------------------------------------------------------------
  171. void InitializeSize(const CPoint& point, BOOL bCenterHorz = FALSE);
  172. //-----------------------------------------------------------------------
  173. // Summary:
  174. //     Forwards a message to the window at specified cursor position.
  175. // Parameters:
  176. //     uiMsg  - Specifies the message to be sent.
  177. //     nFlags - Indicates whether various virtual keys are down. See Remarks
  178. //              section for a list of values.
  179. //     point  - xy coordinates of the window to send the message to.
  180. // Remarks:
  181. //     The <i>nFlags</i> parameter can be any combination of the following
  182. //     values:<p/>
  183. //     * <b>MK_CONTROL</b> Set if the CTRL key is down.
  184. //     * <b>MK_LBUTTON</b> Set if the left mouse button is down.
  185. //     * <b>MK_MBUTTON</b> Set if the middle mouse button is down.
  186. //     * <b>MK_RBUTTON</b> Set if the right mouse button is down.
  187. //     * <b>MK_SHIFT</b>   Set if the SHIFT key is down.
  188. //     This member function is called by the CXTTipWindow object to hide
  189. //     the tip window and forward the message specified by <i>uiMsg</i>
  190. //     to the window at coordinates specified by <i>point</i>.
  191. //-----------------------------------------------------------------------
  192. void ForwardMessage(UINT uiMsg, UINT nFlags, CPoint point);
  193. protected:
  194. //{{AFX_CODEJOCK_PRIVATE
  195. DECLARE_MESSAGE_MAP()
  196. //{{AFX_VIRTUAL(CXTTipWindow)
  197. //}}AFX_VIRTUAL
  198. //{{AFX_MSG(CXTTipWindow)
  199. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  200. afx_msg void OnKillFocus(CWnd* pNewWnd);
  201. afx_msg void OnPaint();
  202. afx_msg void OnTimer(UINT_PTR nIDEvent);
  203. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  204. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  205. afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  206. afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
  207. //}}AFX_MSG
  208. //}}AFX_CODEJOCK_PRIVATE
  209. private:
  210. BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  211. COLORREF AlphaPixel(COLORREF crPixel, int i);
  212. int CheckValue(int iValue);
  213. protected:
  214. int             m_nLineSpace;          // Amount in pixels to space the title and description text.
  215. int             m_nTabPositions;       // Specifies the number of tab-stop positions in the array pointed to by <i>m_pnTabStopPositions</i>.
  216. UINT            m_nElapseTimerEventID; // Elapse timer event ID.
  217. UINT            m_nDelayTimerEventID;  // Delay timer event ID.
  218. BOOL            m_bDelayTimerRunning;  // TRUE if delay timer is running.
  219. BOOL            m_bCenterHorz;         // TRUE if the window is to be centered horizontally.
  220. LPINT           m_pnTabStopPositions;  // Points to an array of integers containing the tab-stop positions in logical units. The tab stops must be sorted in increasing order; the smallest x-value should be the first item in the array. Back tabs are not allowed.
  221. DWORD           m_dwTipStyle;          // Initial style for the tip window. See ShowTipWindow(..).
  222. COLORREF        m_crBackColor;         // Background color for the tip window.
  223. COLORREF        m_crTextColor;         // Text color for the tip window.
  224. CRect           m_rcWindow;            // Initial size of the tip window.
  225. CRect           m_rcScreenWindow;      // Initial size of the desktop.
  226. CRect           m_rcShadow;            // Initial size of the tip window shadow.
  227. CRect           m_rectTipArea;         // Size of the client area for the tip window.
  228. CPoint          m_pointTipOffsetPos;   // Specifies the offset to move the top window in relation to the mouse cursor.
  229. CPoint          m_ptMousePos;          // Initial xy coordinates of the cursor when when tip window was created.
  230. CWnd*           m_pParentWnd;          // Parent window.
  231. CSize           m_sizeMargin;          // Amount in pixels of the tip and side margins of where the tip text is displayed.
  232. CSize           m_sizeTitle;           // title text size.
  233. CString         m_strTitle;            // Title text for the tip window.
  234. CXTStringHelper m_strDescrip;          // Description text for the tip window.
  235. CStringArray    m_arStrings;           // Stores strings if the tip is multiline.
  236. };
  237. //////////////////////////////////////////////////////////////////////
  238. AFX_INLINE BOOL CXTTipWindow::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
  239. return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  240. }
  241. AFX_INLINE void CXTTipWindow::SetTipColors(COLORREF crBackColor, COLORREF crTextColor, BOOL bRedraw) {
  242. m_crBackColor = crBackColor; m_crTextColor = crTextColor; if (bRedraw) { InvalidateRect(NULL); }
  243. }
  244. AFX_INLINE void CXTTipWindow::SetMargins(CSize size) {
  245. m_sizeMargin.cx = __max(0, size.cx); m_sizeMargin.cy = __max(0, size.cy); //EM_BM
  246. }
  247. AFX_INLINE void CXTTipWindow::SetLineSpace(int nLineSpace) {
  248. m_nLineSpace = __max(0, nLineSpace);
  249. }
  250. AFX_INLINE void CXTTipWindow::SetTipOffsetPos(CPoint pointOffset) {
  251. m_pointTipOffsetPos = pointOffset;
  252. }
  253. #endif // #if !defined(__XTTIPWINDOW_H__)