2

我正在使用带有 OPENFILENAME 结构的 GetOpenFileName,该结构使用 lpstrFilter 将文件过滤为 *.JPG。但是,在文件打开对话框中,对于文件名,用户可以输入 *.XLS 并查看同一文件夹中的每个 Excel 文件并选择打开 XLS 文件。我想阻止用户这样做。例如,我真的想将它们限制为只能选择 JPG 文件。有没有办法做到这一点?

4

1 回答 1

5

OPENFILENAME结构中,启用OFN_EXPLORER和标志,并在字段中OFN_ENABLEHOOK提供指向Explorer 样式回调函数lpfnHook的指针。当回调收到CDN_FILEOK通知时,您可以验证输入的文件(不仅仅是文件名,甚至是实际的文件内容,如果需要),然后返回适当的返回值来接受/拒绝选择:

如果挂钩过程返回零,则对话框接受指定的文件名并关闭。

要拒绝指定的文件名并强制对话框保持打开状态,请从挂钩过程返回一个非零值并调用该SetWindowLong函数来设置一个非零DWL_MSGRESULT值。

于 2017-05-01T20:44:59.413 回答