为什么lpstrFile在内存中返回地址而不是OPENFILENAMEW结构中的char数组?

rsk*_*k82 0 c++ winapi buffer

这段代码应该编译没有错误,你应该链接-lcomdlg32对话框.程序返回:0x22fcd8或者68如果我使用指针.并且应该(我认为)在对话框中返回文件用户类型的名称.

#include <windows.h>
#include <iostream>

int main() {
  wchar_t szFileName[MAX_PATH] = {0};
  OPENFILENAMEW ofn;
  ZeroMemory(&ofn, sizeof(ofn));
  ofn.lStructSize = sizeof(OPENFILENAME);
  ofn.nMaxFile = MAX_PATH;
  ofn.lpstrFile = szFileName;
  GetSaveFileNameW(&ofn);

  using namespace std;
  cout << szFileName << endl;
  cout << *szFileName << endl; // also a number not a string
}
Run Code Online (Sandbox Code Playgroud)

Pup*_*ppy 6

wcout如果要输出一个wchar_t以null结尾的宽字符串数组,则必须使用.