CFileDialog - 防止删除

时间:2017-01-13 20:14:14

标签: mfc delete-file cfiledialog

我有一个从CFileDialog派生的文件打开/保存对话框。反正是否以编程方式阻止用户在使用此对话框进行浏览时删除文件?目前,他们可以右键单击并转到Windows资源管理器上下文菜单,或者只需突出显示一个文件并按Del键。 感谢。

1 个答案:

答案 0 :(得分:0)

似乎是解决这个问题的两个关键问题: 1)找到控件的句柄:在CFileDialog中它包含SHELLDLL_DefView,它包含SysListView32。间谍++工具有助于显示这一点。覆盖ListView的WndProc,您可以阻止右键单击

2)拦截键盘命令。 在此链接找到解决方案并提供了很好的解释(以及更多信息): https://www.codeproject.com/Articles/5782/Implementing-a-Read-Only-File-Open-or-File-Save-Co

编辑:如果使用如上所述的钩子函数,它确实有效,但得到一个ASSERT。替代方法是不使用钩子fcn但覆盖以下内容: CFileDialog :: OnInitDone //处理WM_NOTIFY CDN_INITDONE消息。 CFileDialog :: OnFolderChange //处理WM_NOTIFY CDN_FOLDERCHANGE消息。