CFileDialog - 防止删除

CFileDialog - prevent delete

我有一个从 CFileDialog 派生的文件 open/save 对话框。无论如何,是否可以防止用户在以编程方式使用此对话框浏览时删除文件?目前,他们可以右键单击并进入 Windows 资源管理器上下文菜单,或者只需突出显示一个文件并按 Del 键。 谢谢。

似乎有 2 个关键问题可以解决此问题: 1) 找到控件的句柄:在 CFileDialog 中它包含 SHELLDLL_DefView,其中包含 SysListView32。 Spy++ 工具有助于显示这一点。覆盖 ListView 的 WndProc,你可以防止 Right-click 的

2) 拦截键盘命令。 在此 link 找到了具有很好解释(以及更多信息)的解决方案: 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 消息。