With The Case Of  Release The Power OF  Visual C++ !   HomeProducts | PurchaseSupport | Downloads  
Download Evaluation
Pricing & Purchase?
E-XD++Visual C++/ MFC Products
Features Tour 
Electronic Form Solution
Visualization & HMI Solution
Power system HMI Solution
CAD Drawing and Printing Solution

Bar code labeling Solution
Workflow Solution

Coal industry HMI Solution
Instrumentation Gauge Solution

Report Printing Solution
Graphical modeling Solution
GIS mapping solution

Visio graphics solution
Industrial control SCADA &HMI Solution
BPM business process Solution

Industrial monitoring Solution
Flowchart and diagramming Solution
Organization Diagram Solution

Graphic editor Source Code
UML drawing editor Source Code
Map Diagramming Solution

Architectural Graphic Drawing Solution
Request Evaluation
ActiveX COM Products
Technical Support
  General Q & A
Discussion Board
Contact Us


Get Ready to Unleash the Power of UCanCode .NET


UCanCode Software focuses on general application software development. We provide complete solution for developers. No matter you want to develop a simple database workflow application, or an large flow/diagram based system, our product will provide a complete solution for you. Our product had been used by hundreds of top companies around the world!

"100% source code provided! Free you from not daring to use components because of unable to master the key technology of components!"

MFC Example: Copy, Move and Delete files and rename directories,  SHFileOperation and CFileFind and FindFirstFile with FindNextFile



There are no methods in VS for copying files and directories (with subdirectories and files) based on API functions. It's necessary to use SHFileOperation function from shell to do it. Sometimes it's inconvenient and this code is designed to fill this space.


This code is a simple wrapper over API functions that allow file and dir operations. Recursion methods are the base of this code. MFC was used for simplification of process (only CString and CFileFind classes used from). If you don't want to use MFC in your project you can change MFC calls to API calls (use STL string and API functions FindFirstFile and FindNextFile instead of CFileFind class).


  1. OverwriteMode is set: If you copy file to the existing file or to the folder where exist file with the same name, it will overwrite it.
  2. OverwriteMode is not set: If you copy file to the existing file or to the folder where exist file with the same name, it will create new file with name 'Copy of ORIGINAL_FILE_NAME'. If file 'Copy of ORIGINAL_FILE_NAME' already exists too, it will create new file with name 'Copy (2) of ORIGINAL_FILE_NAME' and so on.
  3. ucancode.netIfReadonly is set: If you try to delete file with readonly attribute the warning message will be shown. During 'replace' operation this flag is ignored.
  4. ucancode.netIfReadonly is not set: If you try to delete file with readonly attribute it will delete without any question.
  5. Path presentation: It is unimportant how you represent the path with '\' on end or without it. For example you can set 'c:\\1' or 'c:\\1\\' it's the same. You can copy file to file, file to folder or folder to folder. Just set the source path and destination path.

Using the code

  1. Add files FileOperations.cpp and FileOpearations.h to your project.
  2. In the file where you want to use this class add #include "FileOpearations.h"
  3. Create CFileOperation object and use it.

Sample code

Collapse Copy Code
#include "stdafx.h"
#include "FileOperations.h"
// this code copy 'c:\source' directory and 
// all it's subdirectories and files
// to the 'c:\dest' directory. 
CFileOperation fo;      // create object
fo.SetOverwriteMode(false); // reset OverwriteMode flag (optional)
if (!fo.Copy("c:\\source", "c:\\dest")) // do Copy
    fo.ShowError(); // if copy fails show error message
// this code delete 'c:\source' directory and 
// all it's subdirectories and files.
fo.Setucancode.netIfReadOnly();   // set ucancode.netIfReadonly flag (optional)
if (!fo.Delete("c:\\source")) // do Copy
    fo.ShowError(); // if copy fails show error message

If some operation failed you can get error code or error string or show error message (see functions, GetErrorCode(), GetErrorString() and ShowError() accordingly).

For more information you can see demo project.

Available methods

  • bool Delete(CString sPathName); // delete file or folder
  • bool Copy(CString sSource, CString sDest); // copy file or folder
  • bool Replace(CString sSource, CString sDest); // move file or folder
  • bool Rename(CString sSource, CString sDest); // rename file or folder
  • CString GetErrorString(); // return error description
  • DWORD GetErrorCode(); // return error code
  • void ShowError(); // show error message
  • void Setucancode.netIfReadOnly(bool = true); // sets behavior for readonly files(folders)
  • bool Isucancode.netIfReadOnly(); // return current behavior for readonly files(folders)
  • void SetOverwriteMode(bool bOverwrite = false); // sets overwrite mode on/off
  • bool IsOverwriteMode(); // return current overwrite mode
  • bool IsAborted(); // return true if operation was aborted




Copyright ?1998-2022 UCanCode.Net Software , all rights reserved.
Other product and company names herein may be the trademarks of their respective owners.

Please direct your questions or comments to