// XTPTipWindow.h interface for the CXTPTipWindow class. // // This file is a part of the XTREME CONTROLS MFC class library. // (c)1998-2012 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// //{{AFX_CODEJOCK_PRIVATE #if !defined(__XTPTIPWINDOW_H__) #define __XTPTIPWINDOW_H__ //}}AFX_CODEJOCK_PRIVATE #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 const DWORD TWS_XTP_THICKBORDER = 0x0001; // const DWORD TWS_XTP_DROPSHADOW = 0x0002; // const DWORD TWS_XTP_ALPHASHADOW = 0x0004; // //=========================================================================== // Summary: // CXTPTipWindow is a CWnd derived class. It is used to create a CXTPTipWindow // object. CXTPTipWindow objects are tooltip style popup windows that can // display useful information to the end user. Possible options include // shadows, borders, and background color settings. //=========================================================================== class _XTP_EXT_CLASS CXTPTipWindow : public CWnd { public: //----------------------------------------------------------------------- // Summary: // Constructs a CXTPTipWindow object //----------------------------------------------------------------------- CXTPTipWindow(); //----------------------------------------------------------------------- // Summary: // Destroys a CXTPTipWindow object, handles cleanup and deallocation //----------------------------------------------------------------------- virtual ~CXTPTipWindow(); public: //----------------------------------------------------------------------- // Summary: // Call this member function to create the tooltip window. // Parameters: // pParentWnd - Points to the parent of the tooltip window. // Returns: // TRUE if successful, otherwise returns FALSE. //----------------------------------------------------------------------- virtual BOOL Create(CWnd* pParentWnd); public: //----------------------------------------------------------------------- // Summary: // Call this member function to offset the tip window by the distance // specified by pointOffset. // Parameters: // pointOffset - A CPoint object that represents the x, y offset. //----------------------------------------------------------------------- void SetTipOffsetPos(CPoint pointOffset); //----------------------------------------------------------------------- // Summary: // Call this member function to hide the tip window //----------------------------------------------------------------------- void HideTipWindow(); //----------------------------------------------------------------------- // Summary: // Call this member function to set the text tab stop positions for the // tooltip window. // Parameters: // pnTabStopPositions - pointer to integer array containing the tab // stop positions (could be a static array) // nTabPositions - number of array elements. //----------------------------------------------------------------------- void SetTextTabStopPositions(LPINT pnTabStopPositions, int nTabPositions); //----------------------------------------------------------------------- // Summary: // This member function will set the text for the title and description // values that are displayed in the tip window. // Parameters: // lpszTitle - A NULL terminated string that is to be displayed as the // title for the tip window. // lpszDescrip - A NULL terminated string that is to be displayed as // the description text for the tip window. // bRedraw - If TRUE, the tip window will be redrawn. //----------------------------------------------------------------------- void SetTipText(LPCTSTR lpszTitle, LPCTSTR lpszDescrip, BOOL bRedraw = FALSE); //----------------------------------------------------------------------- // Summary: // This member function will set the text and background colors for // the tip window display. // Parameters: // crBackColor - The RGB color value for the background of the tip window. // crTextColor - The RGB color value for the text of the tip window. // bRedraw - If TRUE, the tip window will be redrawn. //----------------------------------------------------------------------- void SetTipColors(COLORREF crBackColor, COLORREF crTextColor, BOOL bRedraw = FALSE); // ------------------------------------------------------------------------------------ // Summary: // This member function will display a tip window to display a title // and description text. Returns TRUE if the tip window was // successfully created, otherwise returns FALSE. // Parameters: // point - The initial x and y coordinates of where the tip window // is to be displayed. // rectCtrl - Reference to a CRect object that represents the size of // the control window where the tip is displayed. // pointMousePos - Reference to a CPoint object that represents the x, y position // of the mouse cursor. // dwTipStyle - Initial style for the tip window. See the Remarks section // for the styles that can be used with the tip window. // nDelay - Specifies the delay value in milliseconds of when the tip // window should show. // nElapse - Specifies the time\-out value in milliseconds of when the // tip window should close. // bCenterHorz - Set this parameter to 'true' to center the window // horizontally on the point passed in. // bShowTipAtCursorPos - TRUE to show the tip at the cursor position. // Remarks: // Styles to be added or removed can be combined by using the bitwise // OR (|) operator. It can be one or more of the following:

// * TWS_XTP_THICKBORDER This style will cause the tip // window to display a thick border around its edges. // * TWS_XTP_DROPSHADOW This style will cause the tip // window to cast a shadow on the parent window. // * TWS_XTP_ALPHASHADOW Used with TWS_XTP_DROPSHADOW // to display an alpha style shadow. By default, mono shadowing is // enabled. // ------------------------------------------------------------------------------------ virtual BOOL ShowTipWindow(const CPoint& point, DWORD dwTipStyle = TWS_XTP_DROPSHADOW, UINT nDelay = 0, UINT nElapse = 5000, BOOL bCenterHorz = FALSE); virtual BOOL ShowTipWindow(const CRect& rectCtrl, const CPoint& pointMousePos, DWORD dwTipStyle = TWS_XTP_DROPSHADOW, UINT nDelay = 0, UINT nElapse = 5000, BOOL bCenterHorz = FALSE, BOOL bShowTipAtCursorPos = FALSE); // //----------------------------------------------------------------------- // Summary: // This member function will set the text margins for the tip window. // Parameters: // size - Initial size for the horizontal and vertical text margins. //----------------------------------------------------------------------- void SetMargins(CSize size); //----------------------------------------------------------------------- // Summary: // This member function will set the line spacing for the tip window. // Parameters: // nLineSpace - Initial size for text line spacing. //----------------------------------------------------------------------- void SetLineSpace(int nLineSpace); protected: //----------------------------------------------------------------------- // Summary: // This member function will draw a shadow rect to the device context // specified by 'pDC'. // Parameters: // pDC - Device context of the window to cast the shadow on. // rect - Reference to a CRect object that represents the initial size of the shadow. //----------------------------------------------------------------------- void DrawShadowRect(CDC* pDC, const CRect& rect); //----------------------------------------------------------------------- // Summary: // This member function will set the sizes for the tip window. // Parameters: // point - The x and y coordinates of where the tip window is to be displayed. // bCenterHorz - Horizontal center the window position. //----------------------------------------------------------------------- virtual void InitializeSize(const CPoint& point, BOOL bCenterHorz = FALSE); //----------------------------------------------------------------------- // Summary: // Forwards a message to the window at specified cursor position. // Parameters: // uiMsg - Specifies the message to be sent. // nFlags - Indicates whether various virtual keys are down. See Remarks // section for a list of values. // point - xy coordinates of the window to send the message to. // Remarks: // The nFlags parameter can be any combination of the following // values:

// * MK_CONTROL Set if the CTRL key is down. // * MK_LBUTTON Set if the left mouse button is down. // * MK_MBUTTON Set if the middle mouse button is down. // * MK_RBUTTON Set if the right mouse button is down. // * MK_SHIFT Set if the SHIFT key is down. // This member function is called by the CXTPTipWindow object to hide // the tip window and forward the message specified by uiMsg // to the window at coordinates specified by point. //----------------------------------------------------------------------- void ForwardMessage(UINT uiMsg, UINT nFlags, CPoint point); //----------------------------------------------------------------------- // Summary: Updates Style to show system shadow //----------------------------------------------------------------------- void CreateShadow(); protected: //{{AFX_CODEJOCK_PRIVATE DECLARE_MESSAGE_MAP() //{{AFX_VIRTUAL(CXTPTipWindow) //}}AFX_VIRTUAL //{{AFX_MSG(CXTPTipWindow) afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnKillFocus(CWnd* pNewWnd); afx_msg void OnPaint(); afx_msg void OnTimer(UINT_PTR nIDEvent); afx_msg BOOL OnEraseBkgnd(CDC* pDC); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnMButtonDown(UINT nFlags, CPoint point); //}}AFX_MSG //}}AFX_CODEJOCK_PRIVATE private: BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); COLORREF AlphaPixel(COLORREF crPixel, int i); int CheckValue(int iValue); protected: BOOL m_bSystemShadow; int m_nLineSpace; // Amount in pixels to space the title and description text. int m_nTabPositions; // Specifies the number of tab-stop positions in the array pointed to by m_pnTabStopPositions. UINT m_nElapseTimerEventID; // Elapse timer event ID. UINT m_nDelayTimerEventID; // Delay timer event ID. BOOL m_bDelayTimerRunning; // TRUE if delay timer is running. BOOL m_bCenterHorz; // TRUE if the window is to be centered horizontally. 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. DWORD m_dwTipStyle; // Initial style for the tip window. See ShowTipWindow(..). COLORREF m_crBackColor; // Background color for the tip window. COLORREF m_crTextColor; // Text color for the tip window. CRect m_rcWindow; // Initial size of the tip window. CRect m_rcScreenWindow; // Initial size of the desktop. CRect m_rcShadow; // Initial size of the tip window shadow. CRect m_rectTipArea; // Size of the client area for the tip window. CPoint m_pointTipOffsetPos; // Specifies the offset to move the top window in relation to the mouse cursor. CPoint m_ptMousePos; // Initial xy coordinates of the cursor when when tip window was created. CWnd* m_pParentWnd; // Parent window. CSize m_sizeMargin; // Amount in pixels of the tip and side margins of where the tip text is displayed. CSize m_sizeTitle; // title text size. CString m_strTitle; // Title text for the tip window. CString m_strDescrip; // Description text for the tip window. CStringArray m_arStrings; // Stores strings if the tip is multiline. }; ////////////////////////////////////////////////////////////////////// AFX_INLINE BOOL CXTPTipWindow::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) { return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext); } AFX_INLINE void CXTPTipWindow::SetTipColors(COLORREF crBackColor, COLORREF crTextColor, BOOL bRedraw) { m_crBackColor = crBackColor; m_crTextColor = crTextColor; if (bRedraw) { InvalidateRect(NULL); } } AFX_INLINE void CXTPTipWindow::SetMargins(CSize size) { m_sizeMargin.cx = __max(0, size.cx); m_sizeMargin.cy = __max(0, size.cy); //EM_BM } AFX_INLINE void CXTPTipWindow::SetLineSpace(int nLineSpace) { m_nLineSpace = __max(0, nLineSpace); } AFX_INLINE void CXTPTipWindow::SetTipOffsetPos(CPoint pointOffset) { m_pointTipOffsetPos = pointOffset; } #endif // #if !defined(__XTPTIPWINDOW_H__)