我正在尝试使我的网络摄像头Win32应用程序一次保存多张照片,即保存一张照片然后另一张照片然后另一张等。
为此,我将一个字符串附加到整数变量,以便每个新的照片名称都可以是唯一的,并且符合CreateBMPFile的第二个参数的格式。这通常是写TEXT("字符串文字")的情况,但我需要在创建每张新照片时继续修改文件名。
PBITMAPINFO pbi = CreateBitmapInfoStruct(hwnd, hbm);
int i = 1;
std::string image = "..\\..\\..\\..\\WebCam\\frame" + std::to_string(i) + ".bmp";
while (!exists(image)) {
LPTSTR filename = (LPTSTR)image.c_str();
CreateBMPFile(hwnd, filename, pbi, hbm, hdcMem);
i++;
}
然而,当我点击" Grab Frame"时,这会编译并执行。按钮,它试图保存它,应用程序崩溃,即我再也看不到GUI了,它变成了一个停滞的过程。
我正在使用exists()函数来查看该文件是否存在于系统中:
inline bool exists(const std::string& name) {
struct stat buffer;
return (stat(name.c_str(), &buffer) == 0);
}
我也尝试过使用sprintf_s()与崩溃应用程序相同的结果。