在此示例中,它可以编译为可工作的代码,但是如果我在它周围放上更复杂的东西,则程序将关闭,无法打开对话框窗口。错误消息是:


#include <windows.h>
int main() {
  OPENFILENAMEW ofn;
  ZeroMemory(&ofn, sizeof(ofn));
  ofn.lStructSize = sizeof(OPENFILENAME);
  ofn.nMaxFile = MAX_PATH;
  ofn.lpstrFile = L"file name";
}

最佳答案

您需要为Windows填充缓冲区。



基本上,Windows在打开/保存对话框中选择文件后,将使用所选文件的路径和文件名填充缓冲区。因此,基本上,您的代码应如下所示:

#include <windows.h>

int main()
{
    wchar_t fileBuffer[MAX_PATH] = {0};

    OPENFILENAMEW ofn;
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(OPENFILENAME);
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrFile = fileBuffer;
}

我希望这有帮助。

关于c++ - 在OPENFILENAMEW结构中填充lpstrFile时,不建议从字符串常量转换为LPWSTR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14402617/

10-11 21:34