我使用带有 OPENFILENAME 结构的 GetOpenFileName,该结构使用 lpstrFilter 将文件过滤为 *.JPG。但是,在文件打开对话框中,对于文件名,用户可以输入 *.XLS 并查看同一文件夹中的每个 Excel 文件,然后选择打开 XLS 文件。我想阻止用户这样做。例如,我想真正限制它们只能选择 JPG 文件。有办法做到这一点吗?
最佳答案
在OPENFILENAME
结构中,启用OFN_EXPLORER
和OFN_ENABLEHOOK
标志,并提供指向Explorer-style callback function的指针。在 lpfnHook
字段中。当回调收到 CDN_FILEOK
通知,您可以验证输入的文件(不仅仅是文件名,甚至是实际的文件内容,如果需要的话),然后返回适当的返回值以接受/拒绝选择:
If the hook procedure returns zero, the dialog box accepts the specified file name and closes.
To reject the specified file name and force the dialog box to remain open, return a nonzero value from the hook procedure and call the
SetWindowLong
function to set a nonzeroDWL_MSGRESULT
value.
关于GetOpenFileName 能否将文件选择限制为与过滤器匹配的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43725674/