1

我正在尝试让我的网络摄像头 Win32 应用程序一次保存多张照片,即先保存一张照片,然后再保存另一张,等等。

为此,我将一个字符串附加到一个整数变量,以便每个新照片名称都可以是唯一的,并且符合 CreateBMPFile 的第二个参数的格式。这通常是编写 TEXT("string literal") 的情况,但我需要在创建每张新照片时不断修改文件名。

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++;
}

这编译并执行,但是,当我单击“抓取框架”按钮并尝试保存它时,应用程序崩溃,即我再也看不到 GUI,它变成了一个停滞的进程。

我正在使用 exists() 函数来查看文件是否存在于系统中:

inline bool exists(const std::string& name) {
    struct stat buffer;
    return (stat(name.c_str(), &buffer) == 0);
}

我也尝试过使用 sprintf_s() 与崩溃应用程序的结果相同。

4

0 回答 0