www.pudn.com > DiskInfo.tgz > DiskListCtrl.h
#if !defined(AFX_DISKLISTCTRL_H__A1B4C7A9_A445_11D2_9363_0080C8E7F1DB__INCLUDED_) #define AFX_DISKLISTCTRL_H__A1B4C7A9_A445_11D2_9363_0080C8E7F1DB__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // DiskListCtrl.h : header file // #include#include "Common/DiBitmap.h" #define WM_DISKLIST_NOTIFY WM_USER + 164 #define WM_DISKLIST_UPDATE WM_USER + 165 ///////////////////////////////////////////////////////////////////////////// // CDiskListCtrl window class CDiskListCtrl : public CWnd { // Construction public: CDiskListCtrl(); typedef struct tagTHREADPARAMS { char charPath[MAX_PATH]; int nItemCode; int* pnThreadCode; int* pnFileCount; int* pnFolderCount; long double* pldTotalSpace; LPARAM lParam; }THREADPARAMS; // Attributes public: class CItemInfo; typedef CTypedPtrArray CItemArray; CItemArray m_arrayFolder, m_arrayDrive; CFont m_fontTitle; CImageList m_imgTypeList; BOOL m_bEnableBackground; CDIBitmap m_bmpDriveBack, m_bmpFreeBack, m_bmpTotalBack, m_bmpFolderBack, m_bmpHighBack, m_bmpPressedBack; int m_nMouseInCode; //0-n buttons -1 - -6 title bar int m_nMouseDownCode; BOOL m_bMouseDown; double m_dRedAlert; double m_dYellowAlert; int m_nNrThread; // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CDiskListCtrl) public: virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); //}}AFX_VIRTUAL // Implementation public: void EmptyFolderArray(); void OnItemUpdate(WPARAM wParam, LPARAM lParam); void UpdateAbortedFolders(); void OnStartUpdate(int n); void OnFinishedUpdate(int n); void OnPause(); void OnStopAll(); int GetSize(); static int CompareItemSize(const void* f1, const void* f2); static int m_nSortCode; void SortItems(int n); void RedrawItem(int i); int HitTestEx(CPoint pt); void GetTotalUsage(int& nCount, long double& ldTotal, long double& ldFree); void InitCtrl(); void Update(BOOL bFolders = FALSE); void DrawTotalItem(CDC *pDC, const CRect& rcClient); void DrawDrive(CDC* pDC, const CRect& rcClient, int nItem); void DrawFolder(CDC* pDC, const CRect& rcClient, int nItem); int GetFolderSize(); int GetDriveSize(); int GetItemHeight(const CRect& rcClient, BOOL bTitle=FALSE); void GetItemRect(const CRect &rcClient, CRect& rc, int nType, int nPos); void DeleteAll(); BOOL AddFolder(const CString& str); BOOL AddDrive(const CString& str); virtual ~CDiskListCtrl(); // Generated message map functions protected: //{{AFX_MSG(CDiskListCtrl) afx_msg void OnPaint(); afx_msg BOOL OnEraseBkgnd(CDC* pDC); afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnTimer(UINT nIDEvent); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; class CDiskListCtrl::CItemInfo : public CObject { public: inline BOOL GetFinished(); void StopThread(); CDiskListCtrl* m_pCtrl; static UINT ThreadFunc(LPVOID); static void UpdateDir(THREADPARAMS* pThreadParams); void UpdateFolder(int nItemCode); double GetUsage(); void Reset(); BOOL Update(); CItemInfo(CDiskListCtrl* pCtrl); ~CItemInfo(); //BOOL m_bIsDrive; BOOL m_bAvailable; UINT m_nDriveType; CString m_strDriveName; // Folder Name in folder mode CString m_strTitle; // E.g. (C:) System CString m_strPartitionType; int m_nFileCount; int m_nFolderCount; long double m_ldTotalSpace; long double m_ldFreeSpace; CWinThread* m_pThread; int m_nThreadCode; // -1 terminat 0 pause 1 continue }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_DISKLISTCTRL_H__A1B4C7A9_A445_11D2_9363_0080C8E7F1DB__INCLUDED_)