|
//////////////////////////////////////////////////////////////////////
//
// CShellFileOp.h: interface for the CShellFileOp class.
//
//////////////////////////////////////////////////////////////////////
//
// This utility written and copyright by Michael Dunn (mdunn at inreach
// dot com). You may freely use and redistribute this source code and
// binary as long as this notice is retained.
//
// Contact me if you have any questions, comments, or bug reports. Get
// the latest updates at http://home.inreach.com/mdunn/code/
//
//////////////////////////////////////////////////////////////////////
//
// Revision history:
// Feb 28, 2000: Version 1.0: First release.
//
// June 5, 2000: Version 1.1: Fixed (un)registration so the DLL works
// on NT/2000.
//
// Oct 28, 2001: Version 1.1.1: Added 4 default wildcards, *.ncb, *.aps,
// *.bsc, *.sbr.
//
//////////////////////////////////////////////////////////////////////
#ifndef __CSHELLFILEOP_H__
#define __CSHELLFILEOP_H__
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include "objbase.h"
//////////////////////////////////////////////////////////////////////
// The CShellFileOp class
//////////////////////////////////////////////////////////////////////
class CShellFileOp
{
// Constructor and destructor
public:
CShellFileOp();
~CShellFileOp();
// Operations
public:
BOOL AddSourceFile ( LPCTSTR szPath );
BOOL AddDestFile ( LPCTSTR szPath );
const CStringList& GetSourceFileList();
const CStringList& GetDestFileList();
void SetOperationFlags (
UINT uOpType,
CWnd* pWnd,
BOOL bSilent,
BOOL bAllowUndo,
BOOL bWildcardFilesOnly,
BOOL bNoConfirmation,
BOOL bNoConfirmationToMakeDir,
BOOL bRenameOnCollision,
BOOL bSimpleProgressDlg );
void SetOperationFlags ( UINT uOpType, CWnd* pWnd, FILEOP_FLAGS fFlags );
void SetProgressDlgTitle ( LPCTSTR szTitle );
BOOL Go ( BOOL* lpbOperationStarted,
int* lpnAPIReturn = NULL,
BOOL* lpbAnyOperationsAborted = NULL );
BOOL AnyOperationsAborted();
void Reset();
// Internal data
protected:
// State flags that indicate whether
// you've provided enough info before
// calling Go() or AnyOperationsAborted().
BOOL m_bFlagsSet;
BOOL m_bGoCalledAPI;
// file lists
CStringList m_lcstrSourceFiles;
CStringList m_lcstrDestFiles;
// The file op struct passed to
SHFILEOPSTRUCT m_rFOS; // SHFileOperation().
CString m_cstrProgressDlgTitle;
// Internal functions
protected:
void ResetInternalData();
DWORD GetRequiredBufferSize ( const CStringList& );
void FillSzzBuffer ( TCHAR*, const CStringList& );
};
#endif // ndef __CSHELLFILEOP_H__
|
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.
Michael lives in sunny Mountain View, California. He started programming with an Apple
//e in 4th grade, graduated from
UCLA with a math degree in 1994, and immediately landed a job as a QA engineer at Symantec, working on the Norton AntiVirus team. He pretty much taught himself Windows and MFC programming, and in 1999 he designed and coded a new interface for Norton AntiVirus 2000.
Mike has been a a developer at
Napster and at his own lil' startup, Zabersoft, a development company he co-founded with offices in Los Angeles and Odense, Denmark. Mike is now a senior engineer at
VMware.
He also enjoys his hobbies of playing pinball, bike riding, photography, and Domion on Friday nights (current favorite combo: Village + double Pirate Ship). He would get his own snooker table too if they weren't so darn big! He is also sad that he's forgotten the languages he's studied: French, Mandarin Chinese, and Japanese.
Mike was a
VC MVP from 2005 to 2009.