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.
1783 lines
78 KiB
C
1783 lines
78 KiB
C
2 years ago
|
// XTOutBarCtrl.h interface for the CXTOutBarCtrl 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(__XTOUTBARCTRL_H__)
|
||
|
#define __XTOUTBARCTRL_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER >= 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER >= 1000
|
||
|
|
||
|
// forwards
|
||
|
class CXTOutBarItem;
|
||
|
class CXTOutBarFolder;
|
||
|
class CXTOutBarEditItem;
|
||
|
class CXTOutBarCtrlTheme;
|
||
|
|
||
|
const DWORD OBS_XT_SMALLICON = 0x0001; //<ALIAS CXTOutBarCtrl::ModifyFlag@const DWORD&@const DWORD&@const bool>
|
||
|
const DWORD OBS_XT_LARGEICON = 0x0002; //<ALIAS CXTOutBarCtrl::ModifyFlag@const DWORD&@const DWORD&@const bool>
|
||
|
const DWORD OBS_XT_EDITGROUPS = 0x0004; //<ALIAS CXTOutBarCtrl::ModifyFlag@const DWORD&@const DWORD&@const bool>
|
||
|
const DWORD OBS_XT_EDITITEMS = 0x0008; //<ALIAS CXTOutBarCtrl::ModifyFlag@const DWORD&@const DWORD&@const bool>
|
||
|
const DWORD OBS_XT_REMOVEGROUPS = 0x0010; //<ALIAS CXTOutBarCtrl::ModifyFlag@const DWORD&@const DWORD&@const bool>
|
||
|
const DWORD OBS_XT_REMOVEITEMS = 0x0020; //<ALIAS CXTOutBarCtrl::ModifyFlag@const DWORD&@const DWORD&@const bool>
|
||
|
const DWORD OBS_XT_ADDGROUPS = 0x0040; //<ALIAS CXTOutBarCtrl::ModifyFlag@const DWORD&@const DWORD&@const bool>
|
||
|
const DWORD OBS_XT_DRAGITEMS = 0x0080; //<ALIAS CXTOutBarCtrl::ModifyFlag@const DWORD&@const DWORD&@const bool>
|
||
|
const DWORD OBS_XT_ANIMATION = 0x0100; //<ALIAS CXTOutBarCtrl::ModifyFlag@const DWORD&@const DWORD&@const bool>
|
||
|
const DWORD OBS_XT_SELHIGHLIGHT = 0x0200; //<ALIAS CXTOutBarCtrl::ModifyFlag@const DWORD&@const DWORD&@const bool>
|
||
|
const DWORD OBS_XT_DEFAULT = 0x00FC; //<ALIAS CXTOutBarCtrl::ModifyFlag@const DWORD&@const DWORD&@const bool>
|
||
|
|
||
|
const UINT XTWM_OUTBAR_NOTIFY = (WM_XTP_CONTROLS_BASE + 19);
|
||
|
const int OBN_XT_ITEMCLICK = 1;
|
||
|
const int OBN_XT_ONLABELENDEDIT = 2;
|
||
|
const int OBN_XT_ONGROUPENDEDIT = 3;
|
||
|
const int OBN_XT_DRAGITEM = 4;
|
||
|
const int OBN_XT_FOLDERCHANGE = 5;
|
||
|
const int OBN_XT_ITEMHOVER = 6;
|
||
|
const int OBN_XT_DELETEITEM = 7;
|
||
|
const int OBN_XT_DELETEFOLDER = 8;
|
||
|
const int OBN_XT_BEGINDRAG = 9;
|
||
|
const int OBN_XT_ITEMRCLICK =10;
|
||
|
|
||
|
// ---------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// XT_OUTBAR_INFO structure is used by by the CXTOutBarCtrl
|
||
|
// class to store and information for an Outlook bar folder or item.
|
||
|
// See Also:
|
||
|
// CXTOutBarCtrl, CXTOutBarCtrl::OnLabelChanged
|
||
|
// ---------------------------------------------------------------------
|
||
|
struct XT_OUTBAR_INFO
|
||
|
{
|
||
|
int nIndex; // Index of the item.
|
||
|
int nDragTo; // Ending drag index.
|
||
|
int nDragFrom; // Starting drag index.
|
||
|
bool bFolder; // true if the item is a folder
|
||
|
LPCTSTR lpszText; // Item text.
|
||
|
HWND hWnd; // CXTOutBarCtrl window handle
|
||
|
};
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTOutBarCtrl is a CWnd derived class. It is used to create a shortcut
|
||
|
// bar window similar to the shortcut bar seen in Outlook(tm).
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTOutBarCtrl : public CWnd, public CXTThemeManagerStyleHostBase
|
||
|
{
|
||
|
DECLARE_DYNCREATE(CXTOutBarCtrl)
|
||
|
DECLARE_THEME_HOST(CXTOutBarCtrl)
|
||
|
DECLARE_THEME_REFRESH(CXTOutBarCtrl)
|
||
|
|
||
|
public:
|
||
|
// ----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Enumeration to determine an item type.
|
||
|
// Remarks:
|
||
|
// HitTestCode type defines the constants used to determine the
|
||
|
// type of item that was found during a HitTestEx operation.
|
||
|
// See Also:
|
||
|
// CXTOutBarCtrl, CXTOutBarCtrl::HitTestEx
|
||
|
//
|
||
|
// <KEYWORDS hitNone, hitFolder, hitItem, hitUpScroll, hitDnScroll>
|
||
|
// ----------------------------------------------------------------------
|
||
|
enum HitTestCode
|
||
|
{
|
||
|
hitNone =-1, // No item was found.
|
||
|
hitFolder = 0, // The item found was a folder.
|
||
|
hitItem = 1, // The item found was a shortcut.
|
||
|
hitUpScroll = 2, // The item found was a up arrow.
|
||
|
hitDnScroll = 3 // The item found was a down arrow.
|
||
|
};
|
||
|
|
||
|
// ----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Enumeration to determine an item's size.
|
||
|
// Remarks:
|
||
|
// RectItem type defines the constants used to determine the
|
||
|
// size or the item or one of its components (label or icon). This is
|
||
|
// used to determine how the control should be rendered.
|
||
|
// See Also:
|
||
|
// CXTOutBarCtrl, CXTOutBarCtrl::GetItemSize
|
||
|
//
|
||
|
// <KEYWORDS rectItemIcon, rectItemLabel, rectItemBoth>
|
||
|
// ----------------------------------------------------------------------
|
||
|
enum RectItem
|
||
|
{
|
||
|
rectItemIcon = 1, // Area is the size of an item icon.
|
||
|
rectItemLabel = 2, // Area is the size of an item label.
|
||
|
rectItemBoth = 3 // Area is the size of both the item icon and label combined.
|
||
|
};
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTOutBarCtrl object
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTOutBarCtrl();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys a CXTOutBarCtrl object, handles cleanup and deallocation
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTOutBarCtrl();
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set an animation effect for the currently
|
||
|
// selected item. It is not to be used with OBS_XT_SELHIGHLIGHT flag.
|
||
|
// Parameters:
|
||
|
// iTime - Specifies the time in milliseconds that the selected item will animate.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetAnimSelHighlight(const int iTime);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the item data that was set for
|
||
|
// the specified folder.
|
||
|
// Parameters:
|
||
|
// iFolder - The index of the folder to retrieve item data for. If -1, the currently
|
||
|
// selected folder item data is returned.
|
||
|
// Returns:
|
||
|
// A DWORD value.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual DWORD GetFolderData(int iFolder = -1);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the CWnd object that has been set
|
||
|
// for the folder specified by 'iFolder'.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder to retrieve the CWnd object for, if -1 the currently
|
||
|
// selected folder CWnd object is used.
|
||
|
// Returns:
|
||
|
// If 'iFolder' is -1, the child of the currently selected folder is returned.
|
||
|
// If no object has been set for the folder, the return value is NULL.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CWnd* GetFolderChild(int iFolder = -1);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to add a folder with a CWnd child nested
|
||
|
// inside of it. You can insert a folder with any CWnd object, such as
|
||
|
// a tree control (see the OutlookBar sample).
|
||
|
// Parameters:
|
||
|
// lpszFolderName - Name of the folder to add.
|
||
|
// pWndChild - Points to a valid CWnd object. The object must be created before
|
||
|
// inserting.
|
||
|
// dwData - Item data (lParam) for the folder.
|
||
|
// Returns:
|
||
|
// The integer value that represents the index of the added folder.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int AddFolderBar(LPCTSTR lpszFolderName, CWnd* pWndChild, const DWORD dwData = 0);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get the text of the specified item for
|
||
|
// the currently selected folder.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the item to retrieve the text for.
|
||
|
// Returns:
|
||
|
// A CString object containing the retrieved text.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CString GetItemText(const int iIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the tick count, in milliseconds, between
|
||
|
// each animation frame in folder scrolling. If you set a value of -1,
|
||
|
// or minor, no animation will be played. Animation requires the OBS_XT_ANIMATION
|
||
|
// flag be set.
|
||
|
// Parameters:
|
||
|
// lValue - Specifies the time in milliseconds between animation. A value of
|
||
|
// -1 will disable animation playback.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetAnimationTickCount(const long lValue);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get the current animation tick count.
|
||
|
// Returns:
|
||
|
// An integer value representing the current tick count.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int GetAnimationTickCount();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the image index, in the image list,
|
||
|
// for the 'iIndex' item of the currently selected folder.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the item in the currently selected folder.
|
||
|
// iImage - Index of the image, in the image list, to use for the specified item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetItemImage(const int iIndex, const int iImage);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the item data (lParam) for the specified
|
||
|
// item in the currently selected folder.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the item to set item data for.
|
||
|
// dwData - Item data (lParam) to set.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetItemData(const int iIndex, const DWORD dwData);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the index of the image associated
|
||
|
// with the specified item in the currently selected folder.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the item to retrieve the image index for.
|
||
|
// Returns:
|
||
|
// An integer value that represents the index of the desired image.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int GetItemImage(const int iIndex) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get the item data (lParam) for the specified
|
||
|
// item in the currently selected folder.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the item to retrieve item data for.
|
||
|
// Returns:
|
||
|
// A DWORD value.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual DWORD GetItemData(const int iIndex) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to remove all items from the folder specified
|
||
|
// by 'iFolder'.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder to insert the item into.
|
||
|
// bNofify - true to send an XTWM_OUTBAR_NOTIFY message.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void RemoveAllItems(int iFolder, bool bNofify = false);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to remove the specified item from the currently
|
||
|
// selected folder.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the item to remove.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void RemoveItem(const int iIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the text for the specified item in the
|
||
|
// currently selected folder.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the item to set the text for.
|
||
|
// lpszItemName - Points to a NULL terminated string.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetItemText(const int iIndex, LPCTSTR lpszItemName);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to begin local editing of the specified item
|
||
|
// in the currently selected folder.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the item to begin editing for.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void StartItemEdit(const int iIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the text label for the specified folder.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the folder to set the text label for.
|
||
|
// lpszFolderName - Points to a NULL terminated string.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetFolderText(const int iIndex, LPCTSTR lpszFolderName);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to begin editing of the specified folder
|
||
|
// item's label.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the folder to begin editing.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void StartGroupEdit(const int iIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get a pointer to the image list for the
|
||
|
// specified folder.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the folder to retrieve the image list for.
|
||
|
// bSmall - TRUE to return the small image list. FALSE to return the large image
|
||
|
// list.
|
||
|
// Returns:
|
||
|
// A CImageList pointer representing the image list for the folder specified
|
||
|
// by 'iIndex'.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CImageList* GetFolderImageList(const int iIndex, const BOOL bSmall) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return the global image list for the OutlookBar
|
||
|
// control.
|
||
|
// Parameters:
|
||
|
// dwImageList - If OBS_XT_SMALLICON, the small image list is returned; if OBS_XT_LARGEICON,
|
||
|
// the large image list is returned.
|
||
|
// Returns:
|
||
|
// A CImageList pointer representing the global image list for the OutlookBar
|
||
|
// control.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CImageList* GetImageList(DWORD dwImageList);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the image list for the specified folder.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder to set the image list for.
|
||
|
// pImageList - Points to the new image list.
|
||
|
// dwImageList - If OBS_XT_SMALLICON, the small image list is set, if OBS_XT_LARGEICON,
|
||
|
// the large image list is set.
|
||
|
// Returns:
|
||
|
// A pointer to the previously set image list, or NULL if no previous
|
||
|
// image list exists.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CImageList* SetFolderImageList(const int iFolder, CImageList* pImageList, DWORD dwImageList);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will set the main image list. You can link different
|
||
|
// image lists to the folders using the SetFolderImageList function. If a
|
||
|
// folder has been linked to an image list with the SetFolderImageList function,
|
||
|
// it will own the linked image list. Otherwise, it will use the image list
|
||
|
// set with this function.
|
||
|
// Parameters:
|
||
|
// pImageList - Points to the new image list.
|
||
|
// dwImageList - If OBS_XT_SMALLICON, the small image list is set; if OBS_XT_LARGEICON,
|
||
|
// the large image list is set.
|
||
|
// Returns:
|
||
|
// A pointer to the previously set image list, or NULL if no previous image
|
||
|
// list exists.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CImageList* SetImageList(CImageList* pImageList, DWORD dwImageList);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to remove the specified folder and its items.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the folder to remove.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void RemoveFolder(const int iIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will get the index of the currently selected folder.
|
||
|
// Returns:
|
||
|
// An integer value representing the index of the currently selected folder.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int GetSelFolder() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will get the total number of folders found in
|
||
|
// the Outlook bar.
|
||
|
// Returns:
|
||
|
// An integer value representing the number of folders in the Outlook bar.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int GetFolderCount() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will set the selected folder for the Outlook bar.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the new selected folder.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetSelFolder(const int iIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function gets the number of items found in the currently
|
||
|
// selected folder.
|
||
|
// Returns:
|
||
|
// An integer value representing the number of items in the current folder.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int GetItemCount() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to insert an item into the specified folder.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder to insert the item into.
|
||
|
// iIndex - Index or position of the item to insert into the folder.
|
||
|
// lpszItemName - A NULL terminated string that represents the item label. This value
|
||
|
// cannot be set to NULL.
|
||
|
// iImage - Index into the folder's image list.
|
||
|
// dwData - User defined item data that you can assign to the item. Use GetItemData
|
||
|
// and SetItemData to access and change this data.
|
||
|
// Returns:
|
||
|
// The index of the newly inserted item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int InsertItem(const int iFolder, const int iIndex, LPCTSTR lpszItemName, const int iImage = -1, const DWORD dwData = 0);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to add a folder to the Outlook bar control.
|
||
|
// Parameters:
|
||
|
// lpszFolderName - A NULL terminated string that represents the folder's label.
|
||
|
// dwData - User defined item data for the folder.
|
||
|
// Returns:
|
||
|
// The index of the newly inserted folder.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int AddFolder(LPCTSTR lpszFolderName, const DWORD dwData);
|
||
|
|
||
|
// --------------------------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to modify an Outlook bar style.
|
||
|
// Parameters:
|
||
|
// dwRemove - Specifies OBS_XT_ styles to be removed during
|
||
|
// style modification.
|
||
|
// dwAdd - Specifies OBS_XT_ styles to be added during style
|
||
|
// modification.
|
||
|
// bRedraw - true to redraw the Outlook bar.
|
||
|
// Remarks:
|
||
|
// Call this member function to modify an Outlook bar style. Styles
|
||
|
// to be added or removed can be combined by using the bitwise OR (|)
|
||
|
// operator.
|
||
|
//
|
||
|
// The desired styles for the Outlook bar can be one or more of the
|
||
|
// following:<p/>
|
||
|
//
|
||
|
// * <b>OBS_XT_SMALLICON</b> Sets small icon mode.
|
||
|
// * <b>OBS_XT_LARGEICON</b> Sets large icon mode.
|
||
|
// * <b>OBS_XT_EDITGROUPS</b> Enables folder local editing
|
||
|
// (renaming).
|
||
|
// * <b>OBS_XT_EDITITEMS</b> Enables item local editing
|
||
|
// (renaming).
|
||
|
// * <b>OBS_XT_REMOVEGROUPS</b> Enables the "Remove" command for
|
||
|
// folders in context menu.
|
||
|
// * <b>OBS_XT_REMOVEITEMS</b> Enables the "Remove" command for
|
||
|
// items in context menu.
|
||
|
// * <b>OBS_XT_ADDGROUPS</b> Enables folder insertion.
|
||
|
// * <b>OBS_XT_DRAGITEMS</b> Enables item dragging to rearrange
|
||
|
// position.
|
||
|
// * <b>OBS_XT_ANIMATION</b> Enables animation while changing
|
||
|
// folder selection.
|
||
|
// * <b>OBS_XT_SELHIGHLIGHT</b> Enables dimmed highlight of last
|
||
|
// pressed item.
|
||
|
// * <b>OBS_XT_DEFAULT</b> Same as (OBS_XT_DRAGITEMS | OBS_XT_EDITGROUPS
|
||
|
// | OBS_XT_EDITITEMS | OBS_XT_REMOVEGROUPS | OBS_XT_REMOVEITEMS
|
||
|
// | OBS_XT_ADDGROUPS).
|
||
|
// See Also:
|
||
|
// GetFlag, Create, CreateEx
|
||
|
// --------------------------------------------------------------------------------------------
|
||
|
virtual void ModifyFlag(const DWORD& dwRemove, const DWORD& dwAdd, const bool bRedraw = false);
|
||
|
|
||
|
// ----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get the current style set for the
|
||
|
// Outlook bar.
|
||
|
// Returns:
|
||
|
// A DWORD value representing the current style of the Outlook
|
||
|
// bar.
|
||
|
// Remarks:
|
||
|
// See ModifyFlag for a list of available styles.
|
||
|
// See Also:
|
||
|
// ModifyFlag, Create, CreateEx
|
||
|
// ----------------------------------------------------------------------
|
||
|
virtual DWORD GetFlag() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the size of the icons displayed in the
|
||
|
// Outlook bar control for the specified folder.
|
||
|
// Parameters:
|
||
|
// bSet - TRUE to display small icons, or FALSE to display large icons.
|
||
|
// iFolder - Index of the folder to set the icon size for. If -1, all folder icons
|
||
|
// are set.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetSmallIconView(const BOOL bSet, const int iFolder = -1);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return the current state of the icon display
|
||
|
// for the Outlook bar control.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder to check. If -1, the currently selected folder
|
||
|
// is checked.
|
||
|
// Returns:
|
||
|
// TRUE if small icons are displayed, and FALSE if large icons are displayed.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsSmallIconView(const int iFolder = -1) const;
|
||
|
|
||
|
// -----------------------------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to create the Outlook bar control.
|
||
|
// Parameters:
|
||
|
// dwStyle - Style for the Outlook bar. It usually includes the WS_CHILD | WS_VISIBLE
|
||
|
// flags.
|
||
|
// rect - Size of the Outlook bar.
|
||
|
// pParentWnd - Parent of the control.
|
||
|
// nID - Identifier of the Outlook bar control.
|
||
|
// dwFlag - Specifies the style flags for the control. See ModifyFlag
|
||
|
// for a list of available styles.
|
||
|
// Returns:
|
||
|
// TRUE if successful, otherwise returns FALSE.
|
||
|
// See Also:
|
||
|
// CreateEx, ModifyFlag
|
||
|
// -----------------------------------------------------------------------------------------------
|
||
|
virtual BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, const DWORD dwFlag = OBS_XT_DEFAULT);
|
||
|
|
||
|
// --------------------------------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to create the Outlook bar control.
|
||
|
// Parameters:
|
||
|
// dwExStyle - Extended style for the Outlook bar such as WS_EX_STATICEDGE.
|
||
|
// It can be NULL.
|
||
|
// dwStyle - Style for the Outlook bar. It usually includes the WS_CHILD | WS_VISIBLE
|
||
|
// flags.
|
||
|
// rect - Size of the Outlook bar.
|
||
|
// pParentWnd - Parent of the control.
|
||
|
// nID - Identifier of the Outlook bar control.
|
||
|
// dwFlag - Specifies the style flags for the control. See ModifyFlag
|
||
|
// for a list of available styles.
|
||
|
// Returns:
|
||
|
// TRUE if successful, otherwise returns FALSE.
|
||
|
// See Also:
|
||
|
// Create, ModifyFlag
|
||
|
// --------------------------------------------------------------------------------------------------
|
||
|
virtual BOOL CreateEx(DWORD dwExStyle, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, const DWORD dwFlag = OBS_XT_DEFAULT);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the font used by the Outlook bar control.
|
||
|
// Parameters:
|
||
|
// pFont - Points to the font to be used by the Outlook bar.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetFontX(CFont* pFont);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the font used by the Outlook
|
||
|
// bar control.
|
||
|
// Returns:
|
||
|
// A pointer to a CFont object representing the font used by the Outlook bar
|
||
|
// control.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CFont* GetFontX();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return a pointer to the CXTOutBarFolder data
|
||
|
// that is associated with the specified folder.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder to retrieve.
|
||
|
// Returns:
|
||
|
// A pointer to a CXTOutBarFolder object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTOutBarFolder* GetBarFolder(const int iFolder);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return a pointer to the CXTOutBarItem data
|
||
|
// that is associated with the specified folder and item.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder to retrieve.
|
||
|
// iIndex - Index of the item to retrieve.
|
||
|
// Returns:
|
||
|
// A pointer to a CXTOutBarItem object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTOutBarItem* GetBarFolderItem(const int iFolder, const int iIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the background color for the Outlook
|
||
|
// bar control.
|
||
|
// Parameters:
|
||
|
// clrBack - An RGB value that represents the background color.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetBackColor(COLORREF clrBack);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the text color for items in the Outlook
|
||
|
// bar control.
|
||
|
// Parameters:
|
||
|
// clrText - An RGB value that represents the text item color.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetTextColor(COLORREF clrText);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the size of the label for the
|
||
|
// specified item.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder where the item is located.
|
||
|
// iIndex - Index of the item.
|
||
|
// rect - Address of a CRect object that will receive the label size.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void GetLabelRect(const int iFolder, const int iIndex, CRect& rect);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the size of the icon for the
|
||
|
// specified item.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder where the item is located.
|
||
|
// iIndex - Index of the item.
|
||
|
// rect - Address of a CRect object that will receive the icon
|
||
|
// size.
|
||
|
// pInsideRect - Pointer to a CRect object that represents the size
|
||
|
// of the client area for the Outlook bar. If NULL
|
||
|
// GetInsideRect will be used to determine the client
|
||
|
// area size.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void GetIconRect(const int iFolder, const int iIndex, CRect& rect, CRect* pInsideRect = NULL);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the size of the client area for
|
||
|
// the Outlook bar. This is the inside area that contains the folders.
|
||
|
// Parameters:
|
||
|
// rect - Address of a CRect object that will receive the size.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void GetInsideRect(CRect& rect) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the size of the specified item.
|
||
|
// The size includes the area occupied by the item's label and icon.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder where the item is located.
|
||
|
// iIndex - Index of the item.
|
||
|
// rect - Address of a CRect object that will receive the icon
|
||
|
// size.
|
||
|
// pInsideRect - Pointer to a CRect object that represents the size
|
||
|
// of the client area for the Outlook bar. If NULL
|
||
|
// GetInsideRect will be used to determine the client
|
||
|
// area size.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void GetItemRect(const int iFolder, const int iIndex, CRect& rect, CRect* pInsideRect = NULL);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the size of the specified folder.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the folder item.
|
||
|
// rect - Address of a CRect object that will receive the folder size.
|
||
|
// Returns:
|
||
|
// TRUE if successful, otherwise returns FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL GetFolderRect(const int iIndex, CRect& rect) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will set the selected folder and item
|
||
|
// for the Outlook bar.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder that contains the new selection.
|
||
|
// iItem - Index of the new item to select.
|
||
|
// bEnsureVisible - TRUE to ensure the item is visible when selected.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetSelItem(int iFolder, int iItem, BOOL bEnsureVisible = TRUE);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will return the index of the currently selected
|
||
|
// item for the currently selected folder.
|
||
|
// Returns:
|
||
|
// An integer value representing the index of the selected item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetCurSel();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will set the currently selected item for the currently
|
||
|
// selected folder.
|
||
|
// Parameters:
|
||
|
// iItem - Index of the item to select.
|
||
|
// bPressed - true if the item is to be pressed when selected.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetCurSel(int iItem, const BOOL bPressed = false);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to enable or disable a folder item.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder that owns the item.
|
||
|
// iItem - Index of the item to enable or disable.
|
||
|
// bEnable - true to enable item, false to disable.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void EnableItem(int iFolder, int iItem, bool bEnable);
|
||
|
|
||
|
|
||
|
protected:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to draw the up or down scroll button.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// rect - Size of area to render.
|
||
|
// uType - Specifies the type of frame control to draw. See the
|
||
|
// uType parameter in DrawFrameControl in the Platform SDK for
|
||
|
// a list of this parameter's possible values.
|
||
|
// uState - Specifies the initial state of the frame control.
|
||
|
// Can be one or more of the values described for the uState parameter
|
||
|
// in DrawFrameControl in the Platform SDK. Use the nState value
|
||
|
// DFCS_ADJUSTRECT to adjust the bounding rectangle to exclude
|
||
|
// the surrounding edge of the push button.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawScrollButton(CDC* pDC, CRect rect, UINT uType, UINT uState);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to draw a folder item.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// iFolder - Index of the parent folder.
|
||
|
// rc - Size of the area to render.
|
||
|
// iIndex - Index of the item to render.
|
||
|
// bOnlyImage - TRUE if only the image is to be drawn.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawItem(CDC* pDC, const int iFolder, CRect rc, const int iIndex, const BOOL bOnlyImage = false);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to draw the drag arrow
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// iFrom - Index of the item before the arrow.
|
||
|
// iTo - Index of the item after the arrow.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawDragArrow(CDC* pDC, const int iFrom, const int iTo);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to render an item animated.
|
||
|
// Parameters:
|
||
|
// iOffsetX - X distance to offset icon animation.
|
||
|
// iOffsetY - Y distance to offset icon animation.
|
||
|
// iIndex - Index of item to animate.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawAnimItem(const int iOffsetX, const int iOffsetY, const int iIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to render a folder.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// iIndex - Index of the folder to render.
|
||
|
// rect - Size of the area to render.
|
||
|
// eHilight - Current mouse over state.
|
||
|
// See Also: XTMouseState
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawFolder(CDC* pDC, const int iIndex, CRect rect, const XTMouseState eHilight);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to render an item's icon.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// iIcon - Index of the icon to render.
|
||
|
// iFolder - Index of the parent folder.
|
||
|
// bHilight - true if the icon is highlighted.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawIcon(CDC* pDC, int iIcon, int iFolder, bool bHilight);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to render all items for a folder.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// iFolder - Index of the parent folder.
|
||
|
// rc - Size of area to render.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void PaintItems(CDC* pDC, const int iFolder, CRect rc);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to get the area that is visible to the user.
|
||
|
// Parameters:
|
||
|
// iFolder - [in] Index of the folder to get the range for.
|
||
|
// iFirst - [out] Index of the first item that is visible.
|
||
|
// iLast - [out] Index of the last item that is visible.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void GetVisibleRange(const int iFolder, int& iFirst, int& iLast);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to get the size of the
|
||
|
// item dragged.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the item
|
||
|
// rect - Size of the item dragged.
|
||
|
// Returns:
|
||
|
// Style of last drag item that was rendered.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int GetDragItemRect(const int iIndex, CRect& rect);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to get the size of a folder item.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of parent folder.
|
||
|
// iIndex - Index of item.
|
||
|
// iType - The pare of the item to get the size for.
|
||
|
// Returns:
|
||
|
// A CSize object representing the item size.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CSize GetItemSize(const int iFolder, const int iIndex, const RectItem iType);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to render folder animation when a new folder is selected.
|
||
|
// Parameters:
|
||
|
// iFrom - Index of currently selected folder.
|
||
|
// iTo - Index of the new folder to select.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void AnimateFolderScroll(const int iFrom, const int iTo);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to draw an item highlighted.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// iIndex - Index of the item to render.
|
||
|
// bPressed - TRUE if the item is selected.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void HighlightItem(CDC* pDC, const int iIndex, const BOOL bPressed = false);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to render a folder highlighted.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// iIndex - Index of the folder to highlight.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void HighlightFolder(CDC* pDC, const int iIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called to determine the item from a given xy coordinate.
|
||
|
// Parameters:
|
||
|
// point - [in] xy coordinate to test.
|
||
|
// iIndex - [out] Index of the item at the given xy coordinates.
|
||
|
// Returns:
|
||
|
// Item type see HitTestCode.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual HitTestCode HitTestEx(const CPoint& point, int& iIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called to determine if the specified item is valid.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the item to test.
|
||
|
// Returns:
|
||
|
// TRUE if the item is valid, otherwise FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsValidItem(const int iIndex) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to end an item or folder label edit.
|
||
|
// Parameters:
|
||
|
// pEdit - Pointer to the edit control.
|
||
|
// bIsFolder - true if the item edited is a folder.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void EndLabelEdit(CXTOutBarEditItem* pEdit, bool bIsFolder);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl when an item or folders label changes.
|
||
|
// Parameters:
|
||
|
// pObi - Pointer to a XT_OUTBAR_INFO structure.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void OnLabelChanged(const XT_OUTBAR_INFO* pObi);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to draw an item icon.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// pt - xy location of the icon to render.
|
||
|
// pBarItem - Pointer to a CXTOutBarItem object.
|
||
|
// pImageList - Pointer to the CXTOutBarCtrl image list.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawItemIcon(CDC* pDC, CPoint pt, CXTOutBarItem* pBarItem, CImageList* pImageList);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to draw an items label.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// rc - Size of text to render.
|
||
|
// pBarItem - Pointer to a CXTOutBarItem object.
|
||
|
// nFormat - Draw text flags, see CXTOutBarCtrlTheme::DrawItemText.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawItemText(CDC* pDC, CRect rc, CXTOutBarItem* pBarItem, UINT nFormat);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTOutBarCtrl to render a folder that contains
|
||
|
// a CWnd object when a new folder is selected.
|
||
|
// Parameters:
|
||
|
// pWnd - Pointer to the child of the folder.
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// nOffset - Amount in pixels to offset from the top.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DrawPreviewBitmap(CWnd* pWnd, CDC* pDC, int nOffset);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member is called to notify the parent window that an event
|
||
|
// has occurred in the task panel.
|
||
|
// Parameters:
|
||
|
// nCode - Specifies which event has occurred.
|
||
|
// pobi - Additional message-specific information.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual LRESULT NotifyOwner(UINT nCode, XT_OUTBAR_INFO* pobi);
|
||
|
|
||
|
protected:
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
|
||
|
//{{AFX_MSG(CXTOutBarCtrl)
|
||
|
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||
|
afx_msg void OnPaint();
|
||
|
afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM /*lParam*/);
|
||
|
virtual void OnDraw(CDC* pDC);
|
||
|
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
||
|
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
|
||
|
afx_msg void OnMouseLeave();
|
||
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
||
|
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
|
||
|
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||
|
afx_msg void OnLargeIcon();
|
||
|
afx_msg void OnUpdateLargeIcon(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnSmallIcon();
|
||
|
afx_msg void OnUpdateSmallIcon(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnRemoveItem();
|
||
|
afx_msg void OnUpdateRemoveItem(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnRenameItem();
|
||
|
afx_msg void OnUpdateRenameItem(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
|
||
|
afx_msg void OnDestroy();
|
||
|
//}}AFX_MSG
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
private:
|
||
|
BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
|
||
|
BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, LPVOID lpParam = NULL);
|
||
|
|
||
|
|
||
|
protected:
|
||
|
|
||
|
int m_nFolderHeight; // Size in pixels of the folder caption bar.
|
||
|
int m_nSelFolder; // Index of the currently selected folder.
|
||
|
int m_nFolderHilighted; // Index of the currently highlighted folder.
|
||
|
int m_nItemHilighted; // Index of the currently highlighted item.
|
||
|
int m_nLastFolderSelected; // Index of the last folder that was selected.
|
||
|
int m_nLastItemSelected; // Index of the last item that was selected.
|
||
|
int m_nFirstItem; // Index of the first visible item.
|
||
|
int m_nIconSpacingLarge; // Amount in pixels of the gap between large icons.
|
||
|
int m_nIconSpacingSmall; // Amount in pixels of the gap between small icons.
|
||
|
int m_nHitInternal1; // Used internally to test folder and item indexes.
|
||
|
int m_nHitInternal2; // Used internally to test folder and item indexes.
|
||
|
int m_nLastDragItemDraw; // Insertion index for drag and drop operations.
|
||
|
int m_nLastDragItemDrawType; // Style of last drag item that was rendered.
|
||
|
int m_nSelAnimCount; // Selected item animation sequence count
|
||
|
int m_nSelAnimTiming; // Specifies the time in milliseconds that the selected item will animate.
|
||
|
int m_nAnimationTickCount; // Specifies the time in milliseconds between animation.
|
||
|
CPen m_penBlack; // Pen used to render drag arrow.
|
||
|
BOOL m_bUpArrow; // TRUE when the up scroll arrow is displayed.
|
||
|
BOOL m_bDownArrow; // TRUE when the down scroll arrow is displayed.
|
||
|
BOOL m_bUpPressed; // TRUE when the up scroll arrow is selected.
|
||
|
BOOL m_bDownPressed; // TRUE when the down scroll arrow is selected.
|
||
|
BOOL m_bIconPressed; // TRUE when the selected item's icon should be rendered selected.
|
||
|
BOOL m_bLooping; // TRUE when scrolling to continue iteration.
|
||
|
BOOL m_bPressedHighlight; // TRUE when the selected item should be rendered.
|
||
|
CFont m_font; // Font used by the outlook bar.
|
||
|
DWORD m_dwFlags; // Style for the Outlook bar.
|
||
|
CRect m_rcUpArrow; // Size and location of the up scroll arrow.
|
||
|
CRect m_rcDownArrow; // Size and location of the down scroll arrow.
|
||
|
CSize m_sizeOffset; // Amount in pixels of the gap between an item icon and text.
|
||
|
CSize m_sizeMargin; // Amount in pixels of the gap between the border and item text and icon.
|
||
|
CPtrArray m_arFolder; // Array of folders added to the outlook bar.
|
||
|
CImageList* m_pLargeImageList; // Points to the large image list for the outlook bar.
|
||
|
CImageList* m_pSmallImageList; // Points to the small image list for the outlook bar.
|
||
|
|
||
|
|
||
|
friend class CXTOutBarEditItem;
|
||
|
};
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
AFX_INLINE int CXTOutBarCtrl::GetCurSel() {
|
||
|
return m_nItemHilighted;
|
||
|
}
|
||
|
AFX_INLINE void CXTOutBarCtrl::SetCurSel(int iItem, const BOOL bPressed/*=false*/) {
|
||
|
HighlightItem(NULL, iItem, bPressed);
|
||
|
}
|
||
|
AFX_INLINE BOOL CXTOutBarCtrl::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 BOOL CXTOutBarCtrl::CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, LPVOID lpParam) {
|
||
|
return CWnd::CreateEx(dwExStyle, lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, lpParam);
|
||
|
}
|
||
|
|
||
|
// ----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTOutBarItem is a stand alone helper class. It is used by the
|
||
|
// CXTOutBarCtrl to maintain information about each folder item
|
||
|
// specified in the Outlook bar control.
|
||
|
// ----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTOutBarItem
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
// --------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTOutBarItem object
|
||
|
// Parameters:
|
||
|
// lpszName - [in] A NULL terminated string that represents the
|
||
|
// item name.
|
||
|
// nImageIndex - [in] An index into the folders image list.
|
||
|
// dwData - [in] User item data (lParam).
|
||
|
// --------------------------------------------------------------------
|
||
|
CXTOutBarItem(LPCTSTR lpszName, const int nImageIndex, DWORD dwData);
|
||
|
|
||
|
// ------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys a CXTOutBarItem object, handles cleanup and
|
||
|
// deallocation
|
||
|
// ------------------------------------------------------------
|
||
|
virtual ~CXTOutBarItem();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the zero-based index of the folder
|
||
|
// item.
|
||
|
// Returns:
|
||
|
// An integer value that represents the zero-based index of the folder item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetIndex();
|
||
|
|
||
|
// ----------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the zero-based index of the
|
||
|
// folder item.
|
||
|
// Parameters:
|
||
|
// iIndex - [in] New index of the folder item.
|
||
|
// ----------------------------------------------------------------
|
||
|
void SetIndex(int iIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return the user specified item data (lParam)
|
||
|
// for the folder item.
|
||
|
// Returns:
|
||
|
// A DWORD value that represents the user data.
|
||
|
//-----------------------------------------------------------------------
|
||
|
DWORD GetData();
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set a user data (lParam) value for
|
||
|
// the folder item.
|
||
|
// Parameters:
|
||
|
// dwData - [in] Specifies the user data (lparam) value to be associated
|
||
|
// with the folder item.
|
||
|
// --------------------------------------------------------------------------
|
||
|
void SetData(DWORD dwData);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the label of the folder item.
|
||
|
// Returns:
|
||
|
// A CString object that contains the folder item label.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CString GetName();
|
||
|
|
||
|
// ---------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the label of the folder item.
|
||
|
// Parameters:
|
||
|
// strName - [in] A NULL terminated string that represents the item
|
||
|
// label.
|
||
|
// ---------------------------------------------------------------------
|
||
|
void SetName(LPCTSTR strName);
|
||
|
|
||
|
// --------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the items selected state.
|
||
|
// Parameters:
|
||
|
// bSelected - [in] true to set the item state to selected.
|
||
|
// --------------------------------------------------------------
|
||
|
void SelectItem(bool bSelected);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to see if the item is selected.
|
||
|
// Returns:
|
||
|
// true if the item is selected, otherwise returns false.
|
||
|
//-----------------------------------------------------------------------
|
||
|
bool IsSelected();
|
||
|
|
||
|
// -----------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to toggle the enabled state for the
|
||
|
// \outlook bar item.
|
||
|
// Parameters:
|
||
|
// bEnable - [in] true to enable, false to disable.
|
||
|
// -----------------------------------------------------------------
|
||
|
void EnableItem(bool bEnable);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to determine if the item is enabled.
|
||
|
// Returns:
|
||
|
// true if the item is enabled, otherwise returns false.
|
||
|
//-----------------------------------------------------------------------
|
||
|
bool IsEnabled();
|
||
|
|
||
|
protected:
|
||
|
|
||
|
int m_nIndex; // Item index.
|
||
|
bool m_bEnabled; // true if the icon is enabled.
|
||
|
bool m_bSelected; // true if selected.
|
||
|
DWORD m_dwData; // User data.
|
||
|
CString m_strName; // label of the folder item.
|
||
|
|
||
|
friend class CXTOutBarCtrl;
|
||
|
};
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
AFX_INLINE void CXTOutBarItem::SelectItem(bool bSelected) {
|
||
|
m_bSelected = bSelected;
|
||
|
}
|
||
|
AFX_INLINE bool CXTOutBarItem::IsSelected() {
|
||
|
return m_bSelected;
|
||
|
}
|
||
|
AFX_INLINE void CXTOutBarItem::EnableItem(bool bEnable) {
|
||
|
m_bEnabled = bEnable;
|
||
|
}
|
||
|
AFX_INLINE bool CXTOutBarItem::IsEnabled() {
|
||
|
return m_bEnabled;
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// CXTOutBarFolder is a stand alone helper class. It is used by
|
||
|
// the CXTOutBarCtrl to maintain information about each folder
|
||
|
// specified in the Outlook bar control.
|
||
|
// --------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTOutBarFolder
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
// ----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTOutBarFolder object.
|
||
|
// Parameters:
|
||
|
// lpszName - [in] A NULL terminated string that represents the item
|
||
|
// name.
|
||
|
// dwData - [in] User defined item data (lParam).
|
||
|
// pControl - [in] Pointer to the parent CXTOutBarCtrl object.
|
||
|
// Remarks:
|
||
|
// The CXTOutBarFolder object is constructed by the CXTOutBarCtrl to
|
||
|
// when a new folder to the control.
|
||
|
// See Also:
|
||
|
// CXTOutBarCtrl::AddFolder, CXTOutBarCtrl::AddFolderBar
|
||
|
// ----------------------------------------------------------------------
|
||
|
CXTOutBarFolder(LPCTSTR lpszName, DWORD dwData, CXTOutBarCtrl* pControl);
|
||
|
|
||
|
// --------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys a CXTOutBarFolder object, handles cleanup and
|
||
|
// deallocation
|
||
|
// --------------------------------------------------------------
|
||
|
virtual ~CXTOutBarFolder();
|
||
|
|
||
|
// ---------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the number of folders found
|
||
|
// in the Outlook bar.
|
||
|
// Returns:
|
||
|
// The number of folders in the Outlook bar.
|
||
|
// ---------------------------------------------------------------------
|
||
|
int GetItemCount();
|
||
|
|
||
|
// --------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to insert an item into the Outlook bar
|
||
|
// folder.
|
||
|
// Parameters:
|
||
|
// iIndex - [in] Index of the item.
|
||
|
// lpszName - [in] A NULL terminated string that represents the
|
||
|
// label of the item.
|
||
|
// nImage - [in] Index into the folder's image list.
|
||
|
// dwData - [in] User item data (lParam).
|
||
|
// Returns:
|
||
|
// An integer value.
|
||
|
// --------------------------------------------------------------------
|
||
|
int InsertItem(int iIndex, LPCTSTR lpszName, const int nImage, const DWORD dwData);
|
||
|
|
||
|
// ---------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves a pointer to a CXTOutBarItem at the given index.
|
||
|
// Parameters:
|
||
|
// iIndex - [in] Index of the folder item to retrieve.
|
||
|
// Remarks:
|
||
|
// Call this member function to retrieve a pointer to the CXTOutBarItem
|
||
|
// at the specified index.
|
||
|
// Returns:
|
||
|
// A pointer to a CXTOutBarItem object if successful, otherwise NULL.
|
||
|
// ---------------------------------------------------------------------
|
||
|
CXTOutBarItem* GetItemAt(int iIndex);
|
||
|
|
||
|
// -----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to insert a folder item into the
|
||
|
// location specified by 'iIndex'.
|
||
|
// Parameters:
|
||
|
// iIndex - [in] Zero\-based index of where to insert the new item.
|
||
|
// pBarItem - [in] Points to a valid CXTOutBarItem object.
|
||
|
// -----------------------------------------------------------------------
|
||
|
void InsertItemAt(int iIndex, CXTOutBarItem* pBarItem);
|
||
|
|
||
|
// -------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to remove the specified item from the
|
||
|
// folder.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the item to remove.
|
||
|
// Returns:
|
||
|
// A pointer to the removed item.
|
||
|
// -------------------------------------------------------------------
|
||
|
CXTOutBarItem* RemoveItemAt(int iIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return the label of the folder item.
|
||
|
// Returns:
|
||
|
// A CString object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CString GetName();
|
||
|
|
||
|
// -------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the label for the folder item.
|
||
|
// Parameters:
|
||
|
// strName - [in] A NULL terminated string that represents the folder's
|
||
|
// new label.
|
||
|
// -------------------------------------------------------------------------
|
||
|
void SetName(LPCTSTR strName);
|
||
|
|
||
|
// ---------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return the user defined item data
|
||
|
// (lParam) for the folder.
|
||
|
// Returns:
|
||
|
// A DWORD value that represents the item data if defined, otherwise
|
||
|
// NULL.
|
||
|
// ---------------------------------------------------------------------
|
||
|
DWORD GetData();
|
||
|
|
||
|
// --------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the user item data (lParam) for
|
||
|
// the folder.
|
||
|
// Parameters:
|
||
|
// dwData - [in] User item data (lParam).
|
||
|
// --------------------------------------------------------------------
|
||
|
void SetData(DWORD dwData);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return a pointer to the large image list
|
||
|
// for the folder.
|
||
|
// Returns:
|
||
|
// A pointer to CImageList object if successful, otherwise returns NULL.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CImageList* GetLargeImageList();
|
||
|
|
||
|
// -----------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the large image list for the
|
||
|
// folder.
|
||
|
// Parameters:
|
||
|
// pLargeList - [in] Points to a CImageList object.
|
||
|
// -----------------------------------------------------------------
|
||
|
void SetLargeImageList(CImageList* pLargeList);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return a pointer to the small image list
|
||
|
// for the folder.
|
||
|
// Returns:
|
||
|
// A CImageList object if successful, otherwise returns NULL.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CImageList* GetSmallImageList();
|
||
|
|
||
|
// -----------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the small image list for the
|
||
|
// folder.
|
||
|
// Parameters:
|
||
|
// pSmallList - [in] Points to a CImageList object.
|
||
|
// -----------------------------------------------------------------
|
||
|
void SetSmallImageList(CImageList* pSmallList);
|
||
|
|
||
|
// ----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves a pointer to the child window.
|
||
|
// Remarks:
|
||
|
// Call this member function to retrieve a CWnd pointer to the child
|
||
|
// object that is associated with this folder item.
|
||
|
// Returns:
|
||
|
// A CWnd pointer to the child associated with the folder, or NULL if
|
||
|
// no objects were found.
|
||
|
// See Also:
|
||
|
// SetChild, CXTOutBarCtrl::AddFolderBar
|
||
|
// ----------------------------------------------------------------------
|
||
|
CWnd* GetChild();
|
||
|
|
||
|
// --------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the CWnd child to be associated
|
||
|
// with this folder item.
|
||
|
// Parameters:
|
||
|
// pChild - [in] Points to a valid CWnd object.
|
||
|
// --------------------------------------------------------------------
|
||
|
void SetChild(CWnd* pChild);
|
||
|
|
||
|
// --------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to set the currently selected item for
|
||
|
// the folder.
|
||
|
// Parameters:
|
||
|
// iItem - [in] Index of the item to select
|
||
|
// --------------------------------------------------------------------
|
||
|
void SetSelItem(int iItem);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return a pointer to the currently selected
|
||
|
// item.
|
||
|
// Returns:
|
||
|
// A pointer to a CXTOutBarItem object if successful, otherwise returns NULL.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTOutBarItem* GetSelItem();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return the index for the currently selected
|
||
|
// item.
|
||
|
// Returns:
|
||
|
// The index of the currently selected item if successful, otherwise returns -1.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetSelIndex();
|
||
|
|
||
|
// ----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves a pointer to the parent CXTOutBarCtrl window.
|
||
|
// Remarks:
|
||
|
// Call this member to retrieve a pointer to the folder's CXTOutBarCtrl
|
||
|
// parent window.
|
||
|
// Returns:
|
||
|
// A pointer to a CXTOutBarCtrl object if successful, otherwise NULL.
|
||
|
// ----------------------------------------------------------------------
|
||
|
CXTOutBarCtrl* GetControl();
|
||
|
|
||
|
protected:
|
||
|
|
||
|
BOOL m_bSmallIcons; // TRUE to use small icons.
|
||
|
CWnd* m_pChild; // Child window pointer.
|
||
|
DWORD m_dwData; // Application data.
|
||
|
CString m_strName; // Folder label.
|
||
|
CImageList* m_pLargeList; // Image list for large icons.
|
||
|
CImageList* m_pSmallList; // Image list for small icons.
|
||
|
CList<CXTOutBarItem*, CXTOutBarItem*> m_barItems; // Folder items.
|
||
|
CXTOutBarCtrl* m_pControl; // Pointer to the parent CXTOutBarCtrl object.
|
||
|
|
||
|
friend class CXTOutBarCtrl;
|
||
|
};
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
AFX_INLINE void CXTOutBarCtrl::SetFontX(CFont* pFont) {
|
||
|
ASSERT_VALID(pFont); LOGFONT lf; pFont->GetLogFont(&lf); m_font.DeleteObject(); m_font.CreateFontIndirect(&lf);
|
||
|
}
|
||
|
AFX_INLINE CFont* CXTOutBarCtrl::GetFontX() {
|
||
|
return &m_font;
|
||
|
}
|
||
|
AFX_INLINE void CXTOutBarCtrl::SetAnimationTickCount(const long lValue) {
|
||
|
m_nAnimationTickCount = lValue;
|
||
|
}
|
||
|
AFX_INLINE int CXTOutBarCtrl::GetAnimationTickCount() {
|
||
|
return m_nAnimationTickCount;
|
||
|
}
|
||
|
AFX_INLINE CXTOutBarFolder* CXTOutBarCtrl::GetBarFolder(const int iFolder) {
|
||
|
return (CXTOutBarFolder*)m_arFolder.GetAt(iFolder);
|
||
|
}
|
||
|
AFX_INLINE CXTOutBarItem* CXTOutBarCtrl::GetBarFolderItem(const int iFolder, const int iIndex) {
|
||
|
return GetBarFolder(iFolder)->GetItemAt(iIndex);
|
||
|
}
|
||
|
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
AFX_INLINE int CXTOutBarItem::GetIndex() {
|
||
|
return m_nIndex;
|
||
|
}
|
||
|
AFX_INLINE void CXTOutBarItem::SetIndex(int iIndex) {
|
||
|
m_nIndex = iIndex;
|
||
|
}
|
||
|
AFX_INLINE DWORD CXTOutBarItem::GetData() {
|
||
|
return m_dwData;
|
||
|
}
|
||
|
AFX_INLINE void CXTOutBarItem::SetData(DWORD dwData) {
|
||
|
m_dwData = dwData;
|
||
|
}
|
||
|
AFX_INLINE CString CXTOutBarItem::GetName() {
|
||
|
return m_strName;
|
||
|
}
|
||
|
AFX_INLINE void CXTOutBarItem::SetName(LPCTSTR strName) {
|
||
|
m_strName = strName;
|
||
|
}
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
AFX_INLINE int CXTOutBarFolder::GetItemCount() {
|
||
|
return (int)m_barItems.GetCount();
|
||
|
}
|
||
|
AFX_INLINE CString CXTOutBarFolder::GetName() {
|
||
|
return m_strName;
|
||
|
}
|
||
|
AFX_INLINE void CXTOutBarFolder::SetName(LPCTSTR strName) {
|
||
|
m_strName = strName;
|
||
|
}
|
||
|
AFX_INLINE DWORD CXTOutBarFolder::GetData() {
|
||
|
return m_dwData;
|
||
|
}
|
||
|
AFX_INLINE void CXTOutBarFolder::SetData(DWORD dwData) {
|
||
|
m_dwData = dwData;
|
||
|
}
|
||
|
AFX_INLINE CImageList* CXTOutBarFolder::GetLargeImageList() {
|
||
|
return m_pLargeList;
|
||
|
}
|
||
|
AFX_INLINE void CXTOutBarFolder::SetLargeImageList(CImageList* pLargeList) {
|
||
|
m_pLargeList = pLargeList;
|
||
|
}
|
||
|
AFX_INLINE CImageList* CXTOutBarFolder::GetSmallImageList() {
|
||
|
return m_pSmallList;
|
||
|
}
|
||
|
AFX_INLINE void CXTOutBarFolder::SetSmallImageList(CImageList* pSmallList) {
|
||
|
m_pSmallList = pSmallList;
|
||
|
}
|
||
|
AFX_INLINE CWnd* CXTOutBarFolder::GetChild() {
|
||
|
return m_pChild;
|
||
|
}
|
||
|
AFX_INLINE void CXTOutBarFolder::SetChild(CWnd* pChild) {
|
||
|
m_pChild = pChild;
|
||
|
}
|
||
|
|
||
|
AFX_INLINE CXTOutBarCtrl* CXTOutBarFolder::GetControl() {
|
||
|
return m_pControl;
|
||
|
}
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTOutBarEditItem is a helper class derived from CXTEdit. It is used by
|
||
|
// CXTOutBarCtrl, an Outlook like control, to create an in-place edit box
|
||
|
// that is used to modify a folder or an item within the control.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTOutBarEditItem : public CXTPEdit
|
||
|
{
|
||
|
DECLARE_DYNAMIC(CXTOutBarEditItem)
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTOutBarEditItem object
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTOutBarEditItem();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys a CXTOutBarEditItem object, handles cleanup and deallocation
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTOutBarEditItem();
|
||
|
|
||
|
protected:
|
||
|
|
||
|
int m_iIndex; // Index of the folder or item.
|
||
|
bool m_bEscapeKey; // true if the escape key was pressed.
|
||
|
bool m_bSmallIcons; // true if the folder is using small icons.
|
||
|
bool m_bIsFolder; // true if the edit box is for a folder.
|
||
|
CRect m_rcOriginal; // Original size of the edit box when it was first created.
|
||
|
CString m_strText; // Original string of the edit box when it was first created, and the new text on edit completion.
|
||
|
CXTOutBarCtrl* m_pParentWnd; // Parent Outlook bar control.
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return the index of the folder or item
|
||
|
// currently being edited.
|
||
|
// Returns:
|
||
|
// An integer value that represents the index of the folder or item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetIndex() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to return the text associated with this edit
|
||
|
// control.
|
||
|
// Returns:
|
||
|
// A CString object that represents the text originally
|
||
|
// set for the edit control. If called after the edit is destroyed, it
|
||
|
// returns the modified text value.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CString GetText() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// The Outlook bar control calls this member to create an in-place edit
|
||
|
// control.
|
||
|
// Parameters:
|
||
|
// lpszText - NULL terminated string to be displayed in the edit control.
|
||
|
// dwStyle - Window style for the edit control.
|
||
|
// rect - Size of the edit control.
|
||
|
// pParentWnd - Owner window.
|
||
|
// nID - Control ID.
|
||
|
// nIndex - Folder or item index.
|
||
|
// bIsFolder - true if the edit is for a folder item.
|
||
|
// bSmallIcons - true if the parent folder is displaying small icons.
|
||
|
// Returns:
|
||
|
// TRUE if successful, otherwise returns FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL Create(LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, UINT nIndex, bool bIsFolder, bool bSmallIcons);
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
//{{AFX_VIRTUAL(CXTOutBarEditItem)
|
||
|
public:
|
||
|
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
||
|
protected:
|
||
|
virtual void PostNcDestroy();
|
||
|
//}}AFX_VIRTUAL
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
protected:
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
//{{AFX_MSG(CXTOutBarEditItem)
|
||
|
afx_msg void OnKillFocus(CWnd* pNewWnd);
|
||
|
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
|
||
|
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
|
||
|
//}}AFX_MSG
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
private:
|
||
|
BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
|
||
|
BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
|
||
|
};
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
AFX_INLINE int CXTOutBarEditItem::GetIndex() const {
|
||
|
return m_iIndex;
|
||
|
}
|
||
|
AFX_INLINE CString CXTOutBarEditItem::GetText() const {
|
||
|
return m_strText;
|
||
|
}
|
||
|
AFX_INLINE BOOL CXTOutBarEditItem::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 BOOL CXTOutBarEditItem::Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID) {
|
||
|
return CEdit::Create(dwStyle, rect, pParentWnd, nID);
|
||
|
}
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTToolBox is a CXTOutBarCtrl derived class. It is used to create a
|
||
|
// toolbox control similar to the toolbox control seen in VisualStudio.NET.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTToolBox : public CXTOutBarCtrl
|
||
|
{
|
||
|
DECLARE_DYNCREATE(CXTToolBox)
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTToolBox object
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTToolBox();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys a CXTToolBox object, handles cleanup and deallocation
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTToolBox();
|
||
|
|
||
|
protected:
|
||
|
|
||
|
int m_iFirst; // Index of the first visible item.
|
||
|
int m_iLast; // Index of the last visible item.
|
||
|
bool m_bAnimating; // true if the folder selection is changing.
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to create the toolbox control.
|
||
|
// Parameters:
|
||
|
// dwExStyle - Extended style for the toolbox, such as WS_EX_STATICEDGE. It can be
|
||
|
// NULL.
|
||
|
// dwStyle - Style for the toolbox. It usually includes the WS_CHILD | WS_VISIBLE
|
||
|
// flags.
|
||
|
// rect - Size of the toolbox.
|
||
|
// pParentWnd - Parent of the control.
|
||
|
// nID - Identifier of the toolbox control.
|
||
|
// dwFlag - Specifies the style flags for the control. See CXTOutBarCtrl::ModifyFlag
|
||
|
// for a list of available styles.
|
||
|
// Returns:
|
||
|
// TRUE if successful, otherwise returns FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL CreateEx(DWORD dwExStyle, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, const DWORD dwFlag = OBS_XT_DEFAULT);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the size of the icon for the
|
||
|
// specified item.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder where the item is located.
|
||
|
// iIndex - Index of the item.
|
||
|
// rect - Address of a CRect object that will receive the icon size.
|
||
|
// pInsideRect - Pointer to a CRect object that represents the size
|
||
|
// of the client area for the Outlook bar. If NULL
|
||
|
// GetInsideRect will be used to determine the client
|
||
|
// area size.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void GetIconRect(const int iFolder, const int iIndex, CRect& rect, CRect* pInsideRect = NULL);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to retrieve the size of the specified item.
|
||
|
// The size includes the area occupied by the item's label and icon.
|
||
|
// Parameters:
|
||
|
// iFolder - Index of the folder where the item is located.
|
||
|
// iIndex - Index of the item.
|
||
|
// rect - Address of a CRect object that will receive the item size.
|
||
|
// pInsideRect - Pointer to a CRect object that represents the size
|
||
|
// of the client area for the Outlook bar. If NULL
|
||
|
// GetInsideRect will be used to determine the client
|
||
|
// area size.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void GetItemRect(const int iFolder, const int iIndex, CRect& rect, CRect* pInsideRect = NULL);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function will set the selected folder for the toolbox.
|
||
|
// Parameters:
|
||
|
// iIndex - Index of the new selected folder.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetSelFolder(const int iIndex);
|
||
|
|
||
|
protected:
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
//{{AFX_VIRTUAL(CXTToolBox)
|
||
|
//}}AFX_VIRTUAL
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTToolBox to render an item's icon.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// iIcon - Index of the icon to render.
|
||
|
// iFolder - Index of the parent folder.
|
||
|
// bHilight - true if the icon is highlighted.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawIcon(CDC* pDC, int iIcon, int iFolder, bool bHilight);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTToolBox to draw a folder item.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// iFolder - Index of the parent folder.
|
||
|
// rc - Size of the area to render.
|
||
|
// iIndex - Index of the item to render.
|
||
|
// bOnlyImage - TRUE if only the image is to be drawn.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawItem(CDC* pDC, const int iFolder, CRect rc, const int iIndex, const BOOL bOnlyImage);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTToolBox to render a folder.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// iIndex - Index of the folder to render.
|
||
|
// rect - Size of the area to render.
|
||
|
// eHilight - Current mouse over state.
|
||
|
// See Also: XTMouseState
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawFolder(CDC* pDC, const int iIndex, CRect rect, const XTMouseState eHilight);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the CXTToolBox to draw the up or down scroll button.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context.
|
||
|
// rect - Size of area to render.
|
||
|
// uType - Specifies the type of frame control to draw. See the
|
||
|
// uType parameter in DrawFrameControl in the Platform SDK for
|
||
|
// a list of this parameter's possible values.
|
||
|
// uState - Specifies the initial state of the frame control.
|
||
|
// Can be one or more of the values described for the uState parameter
|
||
|
// in DrawFrameControl in the Platform SDK. Use the nState value
|
||
|
// DFCS_ADJUSTRECT to adjust the bounding rectangle to exclude
|
||
|
// the surrounding edge of the push button.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DrawScrollButton(CDC* pDC, CRect rect, UINT uType, UINT uState);
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
//{{AFX_MSG(CXTToolBox)
|
||
|
afx_msg void OnPaint();
|
||
|
virtual void OnDraw(CDC* pDC);
|
||
|
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
|
||
|
//}}AFX_MSG
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
private:
|
||
|
BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, LPVOID lpParam = NULL);
|
||
|
};
|
||
|
|
||
|
AFX_INLINE BOOL CXTToolBox::CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, LPVOID lpParam) {
|
||
|
return CWnd::CreateEx(dwExStyle, lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, lpParam);
|
||
|
}
|
||
|
|
||
|
#endif // #if !defined(__XTOUTBARCTRL_H__)
|