Click here to Skip to main content
15,895,011 members
Articles / Desktop Programming / MFC

CDirectoryChangeWatcher - ReadDirectoryChangesW all wrapped up

Rate me:
Please Sign up or sign in to vote.
4.92/5 (114 votes)
11 May 2002 2.2M   39.4K   365  
This class wraps up ReadDirectoryChangesW.
// DirWatcherDlg.h : header file
//

#if !defined(AFX_DIRWATCHERDLG_H__ECE3EDC7_6C61_4153_B25B_32A8904A37B1__INCLUDED_)
#define AFX_DIRWATCHERDLG_H__ECE3EDC7_6C61_4153_B25B_32A8904A37B1__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////
// CDirWatcherDlg dialog
#include "DirectoryChanges.h"

class CDirectoryChangeHandler_ListBox : public CDirectoryChangeHandler
{
public:
	CDirectoryChangeHandler_ListBox(CListBox & list_box)
		: CDirectoryChangeHandler(),
		m_listBox( list_box ){}
	protected:
	//These functions are called when the directory to watch has had a change made to it
	virtual void On_FileAdded(const CString & strFileName)
	{
		m_listBox.AddString( _T("File Added: ") + strFileName);
	}
	virtual void On_FileRemoved(const CString & strFileName)
	{
		m_listBox.AddString(_T("File Removed: ") + strFileName);
	}
	virtual void On_FileModified(const CString & strFileName)
	{
		m_listBox.AddString(_T("File Modified: ") + strFileName);
	}
	virtual void On_FileNameChanged(const CString & strOldFileName, const CString & strNewFileName)
	{
		m_listBox.AddString(_T("File name changed from: ") + strOldFileName + _T(" to: ") + strNewFileName);
	}

	CListBox & m_listBox;

};

class CDirWatcherDlg : public CDialog
{
// Construction
public:
	CDirWatcherDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CDirWatcherDlg)
	enum { IDD = IDD_DIRWATCHER_DIALOG };
	CListBox	m_lstChanges2;
	CListBox	m_lstChanges;
	CString	m_strDirectoryToMonitor;
	CString	m_strDirectoryToMonitor2;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CDirWatcherDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	//{{AFX_MSG(CDirWatcherDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnBtnMonitor();
	afx_msg void OnBtnMonitor2();
	afx_msg void OnBtnClear1();
	afx_msg void OnBtnClear2();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

	CDirectoryChangeWatcher			m_DirWatcher;
	CDirectoryChangeHandler_ListBox m_DirChangeHandler;

	DWORD GetChangeFlags1();
	DWORD GetChangeFlags2();
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_DIRWATCHERDLG_H__ECE3EDC7_6C61_4153_B25B_32A8904A37B1__INCLUDED_)

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions