You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
289 lines
14 KiB
C++
289 lines
14 KiB
C++
// 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; //<ALIAS CXTPTipWindow::ShowTipWindow@const CPoint&@DWORD@UINT@UINT@BOOL>
|
|
const DWORD TWS_XTP_DROPSHADOW = 0x0002; //<ALIAS CXTPTipWindow::ShowTipWindow@const CPoint&@DWORD@UINT@UINT@BOOL>
|
|
const DWORD TWS_XTP_ALPHASHADOW = 0x0004; //<ALIAS CXTPTipWindow::ShowTipWindow@const CPoint&@DWORD@UINT@UINT@BOOL>
|
|
|
|
//===========================================================================
|
|
// 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:<p/>
|
|
// * <b>TWS_XTP_THICKBORDER</b> This style will cause the tip
|
|
// window to display a thick border around its edges.
|
|
// * <b>TWS_XTP_DROPSHADOW</b> This style will cause the tip
|
|
// window to cast a shadow on the parent window.
|
|
// * <b>TWS_XTP_ALPHASHADOW</b> 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); //<combine CXTPTipWindow::ShowTipWindow@const CPoint&@DWORD@UINT@UINT@BOOL>
|
|
|
|
//-----------------------------------------------------------------------
|
|
// 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 <i>nFlags</i> parameter can be any combination of the following
|
|
// values:<p/>
|
|
// * <b>MK_CONTROL</b> Set if the CTRL key is down.
|
|
// * <b>MK_LBUTTON</b> Set if the left mouse button is down.
|
|
// * <b>MK_MBUTTON</b> Set if the middle mouse button is down.
|
|
// * <b>MK_RBUTTON</b> Set if the right mouse button is down.
|
|
// * <b>MK_SHIFT</b> 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 <i>uiMsg</i>
|
|
// to the window at coordinates specified by <i>point</i>.
|
|
//-----------------------------------------------------------------------
|
|
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 <i>m_pnTabStopPositions</i>.
|
|
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__)
|