SmsManager/GfxOutBar/GFXOUTBARCTRL.H

225 lines
7.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Copyright (c) Iuri Apollonio 1998
// Use & modify as you want & need, and leave those 3 lines.
// http://www.codeguru.com
#if !defined(AFX_GFXOUTBARCTRL_H__28FA2CA4_11B7_11D2_8437_0000B43382FE__INCLUDED_)
#define AFX_GFXOUTBARCTRL_H__28FA2CA4_11B7_11D2_8437_0000B43382FE__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// GfxOutBarCtrl.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CGfxOutBarCtrl window
#include <afxcoll.h>
#define WM_OUTBAR_NOTIFY WM_USER + 1
#define NM_OB_ITEMCLICK 1
#define NM_OB_ONLABELENDEDIT 2
#define NM_OB_ONGROUPENDEDIT 3
#define NM_OB_DRAGITEM 4
#define NM_FOLDERCHANGE 5
struct OUTBAR_INFO
{
int index;
const TCHAR * cText;
int iDragFrom;
int iDragTo;
};
class CGfxOutBarCtrl : public CWnd
{
// Construction
DECLARE_DYNCREATE(CGfxOutBarCtrl)
public:
CGfxOutBarCtrl();
enum { fSmallIcon = 1 << 0, fLargeIcon = 1 << 1, fEditGroups = 1 << 2, fEditItems = 1 << 3,
fRemoveGroups = 1 << 4, fRemoveItems = 1 << 5, fAddGroups = 1 << 6,
fDragItems = 1 << 7, fAnimation = 1 << 8, fSelHighlight = 1 << 9 };
enum { ircIcon = 1, ircLabel = 2, ircAll = 3 };
// Attributes
public:
COLORREF crBackGroundColor, crBackGroundColor1;
COLORREF crTextColor;
COLORREF crTextSelColor;
COLORREF cr3dFace, crLightBorder, crHilightBorder, crShadowBorder, crDkShadowBorder;
int iFolderHeight;
int xSmallIconLabelOffset, yLargeIconLabelOffset;
int ySmallIconSpacing, yLargeIconSpacing;
int xLeftMargin, yTopMargin;
bool bUpArrow, bDownArrow, bUpPressed, bDownPressed;
CRect rcUpArrow, rcDownArrow;
bool bLooping;
int iHitInternal1, iHitInternal2;
long lAnimationTickCount;
int iLastSel, iSelAnimTiming;
int iSelAnimCount;
DWORD dwFlags;
CPtrArray arFolder;
int iLastFolderHighlighted;
int iLastSelectedFolder;
int iFirstItem;
int iLastItemHighlighted;
bool bPressedHighlight;
int iLastDragItemDraw, iLastDragItemDrawType;
class CBarItem
{
public:
CBarItem(const TCHAR * name, const int image, DWORD exData);
virtual ~CBarItem();
int iImageIndex;
TCHAR * cItem;
DWORD dwData;
};
class CBarFolder
{
public:
CBarFolder(const TCHAR * name, DWORD exData);
virtual ~CBarFolder();
int GetItemCount();
int InsertItem(int index, const TCHAR * text, const int image, const DWORD exData);
TCHAR * cName;
DWORD dwData;
CImageList * pLargeImageList;
CImageList * pSmallImageList;
CPtrArray arItems;
CWnd * pChild;
};
int iSelFolder;
CImageList * pLargeImageList;
CImageList * pSmallImageList;
HCURSOR hHandCursor;
HCURSOR hDragCursor;
HCURSOR hNoDragCursor;
CPen * pBlackPen;
//<2F><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>Ŀ¼ʱ<C2BC>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
bool bIsQueryRemove;
// Operations
public:
enum { htNothing = -1, htFolder, htItem, htUpScroll, htDownScroll};
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CGfxOutBarCtrl)
//}}AFX_VIRTUAL
// Implementation
public:
void DrawAnimItem(const int xoffset, const int yoffset, const int index);
void SetAnimSelHighlight(const int iTime);
DWORD GetFolderData(int iFolder = -1);
CWnd * GetFolderChild(int iFolder = -1);
int AddFolderBar(const TCHAR * pFolder, CWnd * pSon, const DWORD exData = 0);
CString GetItemText(const int index);
void SetAnimationTickCount(const long value) { lAnimationTickCount = value; };
long GetAnimationTickCount() { return lAnimationTickCount; };
void AnimateFolderScroll(const int iFrom, const int iTo);
int GetDragItemRect(const int index, CRect &rect);
void DrawDragArrow(CDC * pDC, const int iFrom, const int iTo);
void SetItemImage(const int index, const int iImage);
void SetItemData(const int index, const DWORD dwData);
int GetItemImage(const int index) const;
DWORD GetItemData(const int index) const;
bool IsValidItem(const int index) const;
void RemoveItem(const int index);
void RemoveItem(const TCHAR * text);
void SetItemText(const int index, const TCHAR * text);
void StartItemEdit(const int index);
void SetFolderText(const int index, const TCHAR * text);
void StartGroupEdit(const int index);
void GetLabelRect(const int iFolder, const int iIndex, CRect &rect);
void GetIconRect(const int iFolder, const int iIndex, CRect &rect);
void HighlightItem(const int index, const bool bPressed = false);
void GetVisibleRange(const int iFolder, int &first, int &last);
void DrawItem(CDC * pDC, const int iFolder, CRect rc, const int index, const bool bOnlyImage = false);
CImageList * GetFolderImageList(const int index, const bool bSmall) const;
CSize GetItemSize(const int iFolder, const int index, const int type);
void PaintItems(CDC * pDC, const int iFolder, CRect rc);
CImageList * GetImageList(CImageList * pImageList, int nImageList);
CImageList * SetFolderImageList(const int folder, CImageList * pImageList, int nImageList);
CImageList * SetImageList(CImageList * pImageList, int nImageList);
int GetCountPerPage() const;
//
void SetIfQueryRemove(bool bIfQuery = true){bIsQueryRemove = bIfQuery;};
bool GetIfQueryRemove(){return bIsQueryRemove;};
void RemoveFolder(const int index);
//
int GetSelFolder() const;
int GetFolderCount() const;
void SetSelFolder(const int index);
void SetSelItem(const int index);
int GetItemCount() const;
int InsertItem(const int folder, const int index, const TCHAR * text, const int image = -1, const DWORD exData = 0);
void HighlightFolder(const int index);
int HitTestEx(const CPoint &point, int &index);
void GetInsideRect(CRect &rect) const;
int AddFolder(const TCHAR * cFolderName, const DWORD exData);
void GetItemRect(const int iFolder, const int iIndex, CRect &rect);
bool GetFolderRect(const int iIndex, CRect &rect) const;
void ModifyFlag(const DWORD &dwRemove, const DWORD &dwAdd, const UINT redraw = 0);
DWORD GetFlag() const;
void SetSmallIconView(const bool bSet);
bool IsSmallIconView() const;
BOOL Create(DWORD dwStyle, const RECT& rect, CWnd * pParentWnd, UINT nID, const DWORD dwFlag = fDragItems|fEditGroups|fEditItems|fRemoveGroups|fRemoveItems|fAddGroups|fAnimation|fSelHighlight);
virtual ~CGfxOutBarCtrl();
// Generated message map functions
protected:
void DrawFolder(CDC * pDC, const int iIdx, CRect rect, const bool bSelected);
//{{AFX_MSG(CGfxOutBarCtrl)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
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 OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnGfxLargeicon();
afx_msg void OnUpdateGfxLargeicon(CCmdUI* pCmdUI);
afx_msg void OnGfxSmallicon();
afx_msg void OnUpdateGfxSmallicon(CCmdUI* pCmdUI);
afx_msg void OnGfxRemoveitem();
afx_msg void OnUpdateGfxRemoveitem(CCmdUI* pCmdUI);
afx_msg void OnGfxRenameitem();
afx_msg void OnUpdateGfxRenameitem(CCmdUI* pCmdUI);
//}}AFX_MSG
afx_msg LRESULT OnEndLabelEdit(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_GFXOUTBARCTRL_H__28FA2CA4_11B7_11D2_8437_0000B43382FE__INCLUDED_)