読者です 読者をやめる 読者になる 読者になる

ファイルが残っているフォルダを削除

mfc cpp

コツコツファイル消してからRemoveDirectory()が正攻法だとおもうけど、シェル関数を使うと楽。

間違って大事なフォルダ消しちゃわないようにデバッグ時は要注意だよ。

BOOL DeleteDirectoryUseShellFunc( LPCTSTR lpPathName )
{
	// 入力値チェック
	if( NULL == lpPathName )
	{
		return FALSE;
	}

	// ディレクトリ名の保存(終端を、"\0\0"にする)
	TCHAR szDirectoryPathName[_MAX_PATH];
	_tcsncpy_s( szDirectoryPathName, _MAX_PATH, lpPathName, _TRUNCATE );
	if( '\\' == szDirectoryPathName[_tcslen(szDirectoryPathName) - 1] )
	{	// 一番最後に'\'があるなら取り去る。
		szDirectoryPathName[_tcslen(szDirectoryPathName) -1] = '\0';
	}
	szDirectoryPathName[_tcslen(szDirectoryPathName) + 1] = '\0';

	SHFILEOPSTRUCT fos;
	ZeroMemory( &fos, sizeof(SHFILEOPSTRUCT) );
	fos.hwnd	= NULL;
	fos.wFunc	= FO_DELETE;
 	fos.pFrom	= szDirectoryPathName;
	fos.fFlags	= FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT; // | FOF_ALLOWUNDO;
	if( SHFileOperation( &fos ) )
	{	// 成功すると0が、失敗すると0以外が返る。
		return FALSE;
	}
	return TRUE;
}

ネタ元