リサイクル制度を活用する

Visual C++/MFC には、ファイル削除用のライブラリが備わっています。

SHFileOperation というのがそれで、ファイルやディレクトリを完全消去する代わりに、「ゴミ箱」に放り込みます。

CFile::Remove() 関数を使うと、ファイルしか消去されず、ファイルは完全消去されます。

SHFILEOPSTRUCT 構造体を設定し、SHFileOperation を呼び出します。

以下に、コードを示します。

void SendFileToRecycleBin(CString fileName)
{
	int len=fileName.GetLength();
	TCHAR* buf=(TCHAR*)malloc(sizeof(TCHAR)*(len+2));
	wcscpy(buf,fileName.GetBuffer());
	buf[len+1]='\0';

	SHFILEOPSTRUCT FileOp;
	FileOp.hwnd = this->GetSafeHwnd();
	FileOp.wFunc = FO_DELETE;
	FileOp.pFrom =buf;
	FileOp.pTo = NULL; 
	FileOp.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT;
	FileOp.fAnyOperationsAborted = FALSE;
	FileOp.hNameMappings = NULL;
	FileOp.lpszProgressTitle = NULL;

	SHFileOperation( &FileOp );
	free(buf);
}


inserted by FC2 system