OPENFILENAMEW 结构是 Windows 操作系统中用于打开和保存对话框的 Unicode 版本的结构。以下是 OPENFILENAMEW 结构的定义:
typedef struct tagOFNW {
  DWORD        lStructSize;
  HWND         hwndOwner;
  HINSTANCE    hInstance;
  LPCWSTR      lpstrFilter;
  LPWSTR       lpstrCustomFilter;
  DWORD        nMaxCustFilter;
  DWORD        nFilterIndex;
  LPWSTR       lpstrFile;
  DWORD        nMaxFile;
  LPWSTR       lpstrFileTitle;
  DWORD        nMaxFileTitle;
  LPCWSTR      lpstrInitialDir;
  LPCWSTR      lpstrTitle;
  DWORD        Flags;
  WORD         nFileOffset;
  WORD         nFileExtension;
  LPCWSTR      lpstrDefExt;
  LPARAM       lCustData;
  LPOFNHOOKPROC lpfnHook;
  LPCWSTR      lpTemplateName;
#if (_WIN32_WINNT >= 0x0500)
  void *        pvReserved;
  DWORD        dwReserved;
  DWORD        FlagsEx;
#endif
} OPENFILENAMEW, *LPOPENFILENAMEW;

这个结构用于传递参数给 GetOpenFileName 和 GetSaveFileName 函数,这两个函数用于创建打开和保存对话框。

以下是结构的各个成员的说明:

  •  lStructSize: 结构的大小,以字节为单位,用于指定结构的大小。在调用打开和保存对话框函数之前,必须将此字段设置为结构的大小,通常使用 sizeof(OPENFILENAMEW)。


  •  hwndOwner: 拥有对话框的窗口的句柄。


  •  hInstance: 应用程序实例的句柄。


  •  lpstrFilter: 用于过滤文件类型的字符串,以 NULL 结尾。每个过滤器由一个描述和一个模式(例如:"Text Files (*.txt)\0*.txt\0")组成,最后以两个 NULL 结束。


  •  lpstrCustomFilter: 用于自定义过滤器的字符串。


  •  nMaxCustFilter: lpstrCustomFilter 缓冲区的最大大小。


  •  nFilterIndex: 当对话框打开时,默认显示的过滤器的索引。


  •  lpstrFile: 接收用户选择的文件名的缓冲区。


  •  nMaxFile: lpstrFile 缓冲区的大小。


  •  lpstrFileTitle: 接收用户选择的文件的简短名称的缓冲区。


  •  nMaxFileTitle: lpstrFileTitle 缓冲区的大小。


  •  lpstrInitialDir: 对话框的初始目录。


  •  lpstrTitle: 对话框标题。


  •  Flags: 用于指定对话框的标志,例如是否显示“帮助”按钮等。


  •  nFileOffset: lpstrFile 缓冲区中文件名的偏移量。


  •  nFileExtension: lpstrFile 缓冲区中文件扩展名的偏移量。


  •  lpstrDefExt: 默认文件扩展名。


  •  lCustData: 传递给挂钩过程的应用程序定义的数据。


  •  lpfnHook: 一个指向对话框挂钩过程的指针。


  •  lpTemplateName: 对话框模板的名称。


  •  pvReserved, dwReserved, FlagsEx: 一些额外的参数,通常用于支持新的特性。


请注意,如果你的应用程序使用 Unicode 字符串,应使用 OPENFILENAMEW 结构,以便支持 Unicode 版本的对话框。


转载请注明出处:http://www.zyzy.cn/article/detail/25032/Win32 API/Commdlg.h/OPENFILENAMEW