// XTPCalendarTip.h: interface for the CXTPCalendarTip class.
//
// This file is a part of the XTREME CALENDAR 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(__XTPCalendarTip_H__)
#define __XTPCalendarTip_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
//===========================================================================
// Summary:
// The CXTPCalendarTip class emulates the functionality of a "tool tip"
// control.
// Remarks:
// The CXTPCalendarTip class encapsulates the functionality of
// a "tip control", a small pop-up window that displays a
// single line of text describing the hidden text when hovering over
// an item on the report area.
//
// CXTPCalendarTip provides the functionality to control the
// the tip text, the size of the tip window itself, and the text
// font of the tip.
//
// This class is used by the report control internally.
//
// See Also: CXTPCalendarControl
//===========================================================================
class _XTP_EXT_CLASS CXTPCalendarTip : public CWnd
{
// Construction
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CXTPCalendarTip object.
// Remarks:
// Construct a CXTPCalendarTip object in two steps.
// Call the constructor object and then call
// Create, which initializes the window and
// attaches it to the parent window.
//
// Example:
//
// Declare a local CXTPCalendarTip object.
// CXTPCalendarTip wndTip;
//
// // Declare a dynamic CXTPCalendarTip object.
// CXTPCalendarTip* pTipWnd = new CXTPCalendarTip;
//
// See Also: CWnd, Create, Activate
//-----------------------------------------------------------------------
CXTPCalendarTip();
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPCalendarTip object and handles cleanup and de-allocation.
//-----------------------------------------------------------------------
virtual ~CXTPCalendarTip();
//-----------------------------------------------------------------------
// Summary:
// This member function is used to create a report tip window.
// Parameters:
// pParentWnd - A pointer to a CWnd that is the parent report
// control window.
// Remarks:
// Construct an object in two steps.
// Call the constructor object and then call
// Create(), which initializes the window and
// attaches it to the parent window.
//
// Example:
//
// void MyDialog::ShowToolTip(CRect rcTip, CXTPCalendarTip* pTipWnd)
// {
// if (!pTipWnd->GetSafeHwnd())
// {
// pTipWnd->Create(this);
// }
// pTipWnd->SetHoverRect(rcTip);
// pTipWnd->Activate(TRUE);
// }
//
// Returns:
// TRUE if tip window is created successfully, FALSE otherwise.
// See Also: CXTPCalendarTip::CXTPCalendarTip, Activate
//-----------------------------------------------------------------------
virtual BOOL Create(CWnd* pParentWnd);
// Attributes
public:
//-----------------------------------------------------------------------
// Summary:
// This member function is used to obtain the tooltip text string.
// Returns:
// A CString that contains the current tooltip text.
// See Also: SetTooltipText
//-----------------------------------------------------------------------
CString GetTooltipText() const;
//-----------------------------------------------------------------------
// Summary:
// This member function is used to set the new tooltip text.
// Parameters:
// str - An LPCSTR string that contains the new tooltip caption.
// Remarks:
// Call this member function before activating the tooltip window.
// See Also: GetTooltipText
//-----------------------------------------------------------------------
void SetTooltipText(LPCTSTR str);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to set the tooltip text font.
// Parameters:
// pFont - A pointer to a CFont object that contains the new font.
//-----------------------------------------------------------------------
void SetFont(CFont* pFont);
//-----------------------------------------------------------------------
// Summary:
// This member function is used to set the coordinates of the
// tooltip hover rectangle.
// Parameters:
// rc - A CRect object that contains the new tooltip hover rectangle
// in the parent window coordinates.
// Remarks:
// Called this member function before activating the tooltip window.
// See Also: GetHoverRect
//-----------------------------------------------------------------------
void SetHoverRect(CRect rc);
//-----------------------------------------------------------------------
// Summary:
// This function is used to obtain the coordinates of a tooltip hover rectangle.
// Returns:
// The coordinates of the tooltip hover rectangle in parent window coordinates.
// See Also: SetHoverRect
//-----------------------------------------------------------------------
CRect GetHoverRect() const;
//-----------------------------------------------------------------------
// Summary:
// This function is used to check whether advanced mode is enabled.
// Advanced mode means left mouse click handling.
// Returns:
// TRUE when advanced mode enabled (left mouse click handling).
//-----------------------------------------------------------------------
BOOL IsAdvancedMode() const;
//-----------------------------------------------------------------------
// Summary:
// This function is used to set advanced mode flag.
// Parameters:
// bMode - a BOOL flag to set mode as advanced or standard
//-----------------------------------------------------------------------
void SetAdvancedMode(BOOL bMode = TRUE);
//-----------------------------------------------------------------------
// Summary:
// This member function sets (or disable) the new control drawing
// theme.
// Parameters:
// pTheme - A CXTPCalendarTheme pointer to the theme object.
// If pTheme is NULL - themes are disabled and regular
// painting is used.
//-----------------------------------------------------------------------
void SetTheme(CXTPCalendarTheme* pTheme);
// Operations
public:
//-----------------------------------------------------------------------
// Summary:
// Call this function to activate or deactivate a tool tip control.
// Parameters:
// bActive - A BOOL. Specifies whether the tool tip control is to be activated or deactivated.
// bAdvanced - TRUE for advanced processing (Office2007 theme "add new appt")
// Remarks:
// If bActivate is TRUE, the control is activated.
// If FALSE, it is deactivated.
//
// When a tool tip control is active, the tool tip information
// appears when the cursor is on a tool that is registered with
// the control. When it is inactive, the tool tip information
// does not appear, even when the cursor is on a tool.
// Example: See Create method example.
// See Also: Create, CXTPCalendarTip::CXTPCalendarTip, SetTooltipText
//-----------------------------------------------------------------------
void Activate(BOOL bActive, BOOL bAdvanced = FALSE);
//-----------------------------------------------------------------------
// Summary:
// This function is used to calculate tooltip rectangle.
// Parameters:
// bFull - A BOOL flag of the way of calculation.
// Remarks:
// Standard window DC and stored font and tooltip text are used.
// Returns:
// Size of the tooltip rectangle.
// See Also: SetTooltipText, SetFont.
//-----------------------------------------------------------------------
CSize CalcToolTipRect(BOOL bFull = FALSE);
protected:
//{{AFX_CODEJOCK_PRIVATE
DECLARE_MESSAGE_MAP()
//{{AFX_MSG(CXTPCalendarTip)
afx_msg LRESULT OnNcHitTest(CPoint point);
afx_msg BOOL OnEraseBkgnd(CDC*);
afx_msg void OnPaint();
//}}AFX_MSG
//}}AFX_CODEJOCK_PRIVATE
private:
BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
protected:
CRect m_rcHover; // Hover window coordinates.
CFont* m_pFont; // Font for displaying tooltip text.
CWnd * m_pParentWnd; // Pointer to the parent report window.
CString m_strTooltipText; // Tooltip text to display.
BOOL m_bAdvancedMode; // TRUE when advanced mode is on
CXTPCalendarTheme* m_pTheme;// Pointer to associated Theme object
};
AFX_INLINE BOOL CXTPCalendarTip::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 CString CXTPCalendarTip::GetTooltipText() const {
return m_strTooltipText;
}
AFX_INLINE void CXTPCalendarTip::SetTooltipText(LPCTSTR str) {
m_strTooltipText = str;
}
AFX_INLINE void CXTPCalendarTip::SetFont(CFont* pFont) {
m_pFont = pFont;
}
AFX_INLINE void CXTPCalendarTip::SetHoverRect(CRect rc) {
m_rcHover = rc;
MoveWindow(rc);
}
AFX_INLINE CRect CXTPCalendarTip::GetHoverRect() const {
return m_rcHover;
}
AFX_INLINE void CXTPCalendarTip::SetAdvancedMode(BOOL bMode) {
m_bAdvancedMode = bMode;
}
AFX_INLINE BOOL CXTPCalendarTip::IsAdvancedMode() const {
return m_bAdvancedMode;
}
#endif // !defined(__XTPCalendarTip_H__)