GetOpenFileName可以将文件选择限制为与过滤器匹配的文件吗?

Sea*_* N. 2 c winapi getopenfilename

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

Rem*_*eau 5

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

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

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