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.
328 lines
13 KiB
C
328 lines
13 KiB
C
2 years ago
|
// XTPTaskPanelGroupItem.h interface for the CXTPTaskPanelGroupItem class.
|
||
|
//
|
||
|
// This file is a part of the XTREME TASKPANEL 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(__XTPTASKPANELGROUPITEM_H__)
|
||
|
#define __XTPTASKPANELGROUPITEM_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTPTaskPanelGroupItem is a CXTPTaskPanelItem derived class. It is used in TaskPanel control
|
||
|
// as single item of the group.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPTaskPanelGroupItem : public CXTPTaskPanelItem
|
||
|
{
|
||
|
DECLARE_SERIAL(CXTPTaskPanelGroupItem)
|
||
|
|
||
|
public:
|
||
|
//-------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPTaskPanelGroupItem object
|
||
|
//-------------------------------------------------------------------------
|
||
|
CXTPTaskPanelGroupItem();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys a CXTPTaskPanelGroupItem object, handles cleanup and deallocation.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPTaskPanelGroupItem();
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called when item must be repositioned.
|
||
|
// Parameters:
|
||
|
// rc - New rectangle of the item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CRect OnReposition(CRect rc);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called to draw item in specified rectangle.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context
|
||
|
// rc - Rectangle of item to draw.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void OnDrawItem(CDC* pDC, CRect rc);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this method to retrieve the margins of the item.
|
||
|
// Returns:
|
||
|
// The margins of the item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CRect& GetMargins();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves rectangle of the item.
|
||
|
// Returns:
|
||
|
// Rectangle of the item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CRect GetItemRect() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called to set the bounding rectangle for the
|
||
|
// CXTPTaskPanelGroupItem.
|
||
|
// Parameters:
|
||
|
// lpRect - Rectangle of the item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetItemRect(LPCRECT lpRect);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves the parent group of the item.
|
||
|
// Returns:
|
||
|
// Parent group of the item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPTaskPanelGroup* GetItemGroup() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this method to set bold font for the item to be used.
|
||
|
// Parameters:
|
||
|
// bBold - TRUE to use bold font.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetBold(BOOL bBold = TRUE);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to retrieve if the font is bold.
|
||
|
// Returns:
|
||
|
// TRUE is the font is bold, FALSE otherwise.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsBold() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method attaches control handle to item.
|
||
|
// Parameters:
|
||
|
// hWnd - Window handle to attach.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetControlHandle(HWND hWnd);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary: Returns control handle attached to item.
|
||
|
// Returns: Window handle associated with item
|
||
|
//-----------------------------------------------------------------------
|
||
|
HWND GetControlHandle() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called when an animation step is executed.
|
||
|
// Parameters:
|
||
|
// nStep - Step of animation.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void OnAnimate(int nStep);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this method to set the size of the item.
|
||
|
// Parameters:
|
||
|
// szItem - Item size.
|
||
|
// bAutoHeight - TRUE to stretch control in group.
|
||
|
// See Also: GetSize
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetSize(CSize szItem, BOOL bAutoHeight = FALSE);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to retrieve the backcolor of this item.
|
||
|
// Returns:
|
||
|
// Backcolor of this item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
COLORREF GetBackColor() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to get individual color for task panel item
|
||
|
//-----------------------------------------------------------------------
|
||
|
COLORREF GetTextColor() const;
|
||
|
|
||
|
// ----------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to set individual color for task panel item
|
||
|
// Parameters:
|
||
|
// clrText - New text color to set
|
||
|
// ----------------------------------------------------------------
|
||
|
void SetTextColor(COLORREF clrText);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to retrieve the rectangle of the "tooltip zone"
|
||
|
// while the mouse is positioned over the group item.
|
||
|
// Returns:
|
||
|
// The rectangle of the "tooltip zone" while the mouse is positioned
|
||
|
// over the group item.
|
||
|
// Remarks:
|
||
|
// The "tooltip zone" is the area that a tooltip will be displayed
|
||
|
// while the mouse is positioned over the group item.
|
||
|
// See Also:
|
||
|
// CXTPTaskPanelGroup::GetHitTestRect
|
||
|
//-----------------------------------------------------------------------
|
||
|
CRect GetHitTestRect() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to determine if the item is currently selected.
|
||
|
// Note that multiple items can be selected at one time, but only one
|
||
|
// can have focus.
|
||
|
// Returns:
|
||
|
// TRUE if the item is currently selected.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsItemSelected() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to select this item. Multiple items can have
|
||
|
// focus if CXTPTaskPanel::m_bSelectItemOnFocus is FALSE.
|
||
|
// Parameters:
|
||
|
// bSelected - TRUE if the item will be selected, FALSE to no longer
|
||
|
// select the item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetItemSelected(BOOL bSelected);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Reads or writes this object from or to an archive.
|
||
|
// Parameters:
|
||
|
// pPX - A CXTPPropExchange object to serialize to or from.
|
||
|
//----------------------------------------------------------------------
|
||
|
virtual void DoPropExchange(CXTPPropExchange* pPX);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this method to set text representing item dragged out of control.
|
||
|
// Parameters:
|
||
|
// lpszDragText - Dragged text of the item.
|
||
|
//----------------------------------------------------------------------
|
||
|
void SetDragText(LPCTSTR lpszDragText);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this method to get text representing item dragged out of control.
|
||
|
// Returns:
|
||
|
// Text will be dragged out.
|
||
|
// Remarks:
|
||
|
// You can override it to create dynamic text.
|
||
|
//----------------------------------------------------------------------
|
||
|
virtual CString GetDragText() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member is called to cache a COleDataSource object that
|
||
|
// contains the group item being dragged.
|
||
|
// Parameters:
|
||
|
// srcItem - COleDataSource object to cache.
|
||
|
// bCacheTextData - TRUE to cache text presentation of object.
|
||
|
// Returns:
|
||
|
// TRUE if successful, FALSE if CacheGlobalData returns NULL.
|
||
|
// Remarks:
|
||
|
// This places the item being dragged onto the clipboard.
|
||
|
// See Also:
|
||
|
// CreateFromOleData, CacheGlobalData, CopyToClipboard,
|
||
|
// PasteFromClipboard, PrepareDrag
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL PrepareDrag (COleDataSource& srcItem, BOOL bCacheTextData = TRUE);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves size of the item
|
||
|
// Returns:
|
||
|
// Size of the item.
|
||
|
// See Also: SetSize
|
||
|
//-----------------------------------------------------------------------
|
||
|
CSize GetSize() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Determines if the item is stretched inside its group.
|
||
|
// Returns:
|
||
|
// TRUE if item fill whole group height; FALSE if it has defined height.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsAutoHeight() const;
|
||
|
|
||
|
protected:
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
// System accessibility Support
|
||
|
|
||
|
virtual HRESULT GetAccessibleDefaultAction(VARIANT varChild, BSTR* pszDefaultAction);
|
||
|
virtual HRESULT AccessibleDoDefaultAction(VARIANT varChild);
|
||
|
virtual HRESULT GetAccessibleState(VARIANT varChild, VARIANT* pvarState);
|
||
|
virtual HRESULT AccessibleSelect(long flagsSelect, VARIANT varChild);
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
private:
|
||
|
void GetPreviewBitmap(CWnd* pWnd, CBitmap& bmp);
|
||
|
|
||
|
protected:
|
||
|
|
||
|
CRect m_rcMargins; // Item's margins.
|
||
|
CRect m_rcItem; // Rectangle of the item.
|
||
|
|
||
|
BOOL m_bBold; // TRUE to use bold font.
|
||
|
BOOL m_bSelected; // TRUE if the item is currently selected.
|
||
|
|
||
|
HWND m_hWnd; // Only used for items of type xtpTaskItemTypeControl, this is the control's child window
|
||
|
CSize m_szItem; // Size of item. If size is set to 0, the size will be calculated by the task panel.
|
||
|
CBitmap m_bmpPreview; // Internally used. This holds a screen shot of the attached Windows control when the item type is xtpTaskItemTypeControl.
|
||
|
// This screen shot is used during group animation. During animation, the Windows control is hidden and the screen shot of
|
||
|
// the control is used in place of the actual control during the animation process.
|
||
|
CSize m_szPreview; // Last preview bitmap size
|
||
|
CString m_strDragText; // Drag text of the item.
|
||
|
BOOL m_bAutoHeight; // TRUE if item stretched inside its group.
|
||
|
COLORREF m_clrText; // Text color
|
||
|
|
||
|
|
||
|
friend class CXTPTaskPanelGroup;
|
||
|
};
|
||
|
|
||
|
AFX_INLINE CRect& CXTPTaskPanelGroupItem::GetMargins() {
|
||
|
return m_rcMargins;
|
||
|
}
|
||
|
AFX_INLINE CRect CXTPTaskPanelGroupItem::GetItemRect() const {
|
||
|
return m_rcItem;
|
||
|
}
|
||
|
AFX_INLINE void CXTPTaskPanelGroupItem::SetItemRect(LPCRECT lpRect) {
|
||
|
::CopyRect(&m_rcItem, lpRect);
|
||
|
}
|
||
|
AFX_INLINE CSize CXTPTaskPanelGroupItem::GetSize() const {
|
||
|
return m_szItem;
|
||
|
}
|
||
|
AFX_INLINE BOOL CXTPTaskPanelGroupItem::IsAutoHeight() const {
|
||
|
return m_bAutoHeight;
|
||
|
}
|
||
|
AFX_INLINE COLORREF CXTPTaskPanelGroupItem::GetTextColor() const {
|
||
|
return m_clrText;
|
||
|
}
|
||
|
AFX_INLINE void CXTPTaskPanelGroupItem::SetTextColor(COLORREF clr) {
|
||
|
m_clrText = clr;
|
||
|
RedrawPanel();
|
||
|
}
|
||
|
|
||
|
|
||
|
#endif // !defined(__XTPTASKPANELGROUPITEM_H__)
|