実現したいこと
pngファイルを生成し、Gdiplus::Bitmap::FromFileで、このpngファイルを読み込んで
読み込んだ後に削除したいですが、なぜか消えません。
前提
png生成の過程の詳細は長いので省きますが、
該当箇所までの処理は下記の通りです。
C++
1 const char* FileHead = ".\\data\\data";2 char FileFull[19];3 4 for (num = 0; num < 16; num++)5 {6 FileFull[0] = '\0';7 strcat_s(FileFull, FileHead);8 9 //生成するファイル名設定10 FileFull[7] = '0' + rand() % 10;11 FileFull[8] = '0' + rand() % 10;12 FileFull[9] = '0' + rand() % 10;13 FileFull[10] = '0' + rand() % 10;14 FileFull[11] = '0' + rand()%10;15 FileFull[12] = '0' + rand() % 10;16 FileFull[13] = '0' + rand() % 10;17 FileFull[14] = '.';18 FileFull[15] = 'p';19 FileFull[16] = 'n';20 FileFull[17] = 'g';21 FileFull[18] = '\0';22 //ファイル名をwcharに変換23 std::wstring filename = towstring(FileFull);24 //ファイルを生成 25 StonePng[num]->FileWrite(FileFull);26 27 //ファイルをロード28 pBitmap[num] = Gdiplus::Bitmap::FromFile( filename.c_str());29 30 //ファイルを削除31 remove(FileFull);32 33 //ファイルがあるかぎり、ループを回し続け、ファイル削除を待つ34 while (PathFileExistsA(FileFull));35 36 }37
上記のように、forループで複数のファイルを生成、読み込み、削除を行っています。
一周目で生成した1つ目のファイルは消えますが、二周目から消せなくなっています。
試したこと
元々は、削除されるまで待機の処理はありませんでしたが、削除したファイルが
残り続けるため、存在確認を取ってループしたところ、無限ループに
陥りました。
なお、生成しGdiplus::Bitmap::FromFileで読み込んだファイルはWM_PAINT時に表示できるので、
ファイル破損はありません。
補足情報(FW/ツールのバージョンなど)
Microsoft Visual Studio Community 2022 (64 ビット) - Current
Version 17.4.4
使用
よろしくお願いいたします。

0 コメント