Tuesday, May 04, 2004

 

The source code of OutBar98 after revision - .h

// Copyright (c) Iuri Apollonio 1998
// Use & modify as you want & need, and leave those 3 lines.
// http://www.codeguru.com

#if !defined(AFX_CuteFolderBarCtrl_H__28FA2CA4_11B7_11D2_8437_0000B43382FE__INCLUDED_)
#define AFX_CuteFolderBarCtrl_H__28FA2CA4_11B7_11D2_8437_0000B43382FE__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// CuteFolderBarCtrl.h : header file
//

#define ID_CuteFolderBar_SMALLICON 50000
#define ID_CuteFolderBar_LARGEICON 50001
#define ID_CuteFolderBar_RENAMEITEM 50002
#define ID_CuteFolderBar_REMOVEITEM 50003

/////////////////////////////////////////////////////////////////////////////
// CCuteFolderBarCtrl window

#include

#define WM_CUTEFOLDERBAR_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 CCUTEFOLDERBAR_INORMATION
{
int index;
const char * cText;
int iDragFrom;
int iDragTo;
};

class CCuteFolderBarCtrl : public CWnd
{
// Construction
DECLARE_DYNCREATE(CCuteFolderBarCtrl)
public:
CCuteFolderBarCtrl();

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,
fItemAnimation = 1 << 10};

enum { ircIcon = 1, ircLabel = 2, ircAll = 3 };

// Attributes
public:
COLORREF crBackGroundColor, crBackGroundColor1;
COLORREF crTextColor;
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;
BOOL bIsAnimating;

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 CFolderItem
{
public:
CFolderItem(const char * name, const int image, DWORD exData);
virtual ~CFolderItem();
int iImageIndex;
char * cItem;
DWORD dwData;
};

class CBarFolder
{
public:
CBarFolder(const char * name, DWORD exData);
virtual ~CBarFolder();
int GetItemCount();
int InsertItem(int index, const char * text, const int image, const DWORD exData);
char * cName;
DWORD dwData;
CImageList * pLargeImageList;
CImageList * pSmallImageList;
CPtrArray arItems;
CWnd * pChild;
bool bSmallIcons;
bool bEnabled;
};

int iSelFolder;

CImageList * pLargeImageList;
CImageList * pSmallImageList;

HCURSOR hHandCursor;
HCURSOR hDragCursor;
HCURSOR hNoDragCursor;

CPen * pBlackPen;

// Operations
public:
enum { htNothing = -1, htFolder, htItem, htUpScroll, htDownScroll};

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCuteFolderBarCtrl)
//}}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 AddWndFolder(const char * 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 SetItemText(const int index, const char * text);
void StartItemEdit(const int index);
void SetFolderText(const int index, const char * 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 RemoveFolder(const int index);
int GetSelFolder() const;
int GetFolderCount() const;
void SetSelFolder(const int index);
int GetItemCount() const;
int InsertItem(const int folder, const int index, const char * text, const int image = -1, const DWORD exData = 0);
void HighlightFolder(const int index);
int HitTestEx(const CPoint &point, int &index);
int OnToolHitTest(CPoint point, TOOLINFO * pTI)const;
void GetInsideRect(CRect &rect) const;
int AddItemFolder(const char * 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, const int iFolder = -1);
bool IsSmallIconView(const int iFolder = -1) const;
BOOL CompareVisibleRange(const int iFolder);
BOOL Create(DWORD dwStyle, const RECT& rect, CWnd * pParentWnd, UINT nID, const DWORD dwFlag = fDragItems|fEditGroups|fEditItems|fRemoveGroups|fRemoveItems|fAddGroups|fAnimation|fSelHighlight);
virtual ~CCuteFolderBarCtrl();

// New Functions
void SetSelectedItem(int index, BOOL bInvoke);
void EnableBarFolder(int barfolderindex, bool bEnabled = true);


// Generated message map functions
protected:
void DrawFolder(CDC * pDC, const int iIdx, CRect rect, const bool bSelected);
//{{AFX_MSG(CCuteFolderBarCtrl)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnTimer(UINT 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 OnSetLargeIconView();
afx_msg void OnUpdateCuteFolderBarLargeicon(CCmdUI* pCmdUI);
afx_msg void OnSetSmallIconView();
afx_msg void OnUpdateCuteFolderBarSmallicon(CCmdUI* pCmdUI);
afx_msg void OnRemoveItem();
afx_msg void OnUpdateCuteFolderBarRemoveitem(CCmdUI* pCmdUI);
afx_msg void OnRenameItem();
afx_msg void OnUpdateCuteFolderBarRenameitem(CCmdUI* pCmdUI);
afx_msg BOOL OnToolTipText( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
afx_msg void OnSysColorChange();
//}}AFX_MSG
afx_msg long 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_CCUTEFOLDERBARCTRL_H__28FA2CA4_11B7_11D2_8437_0000B43382FE__INCLUDED_)

Comments: Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?