我有一个从 CFileDialog 派生的文件打开/保存对话框。有没有办法阻止用户在以编程方式使用此对话框浏览时删除文件?目前,他们可以右键单击并进入 Windows 资源管理器上下文菜单,或者只需突出显示一个文件并按 Del 键。谢谢。
问问题
417 次
1 回答
0
似乎是解决此问题的 2 个关键问题: 1) 找到控件的句柄:在 CFileDialog 中,它包含 SHELLDLL_DefView,其中包含 SysListView32。Spy++ 工具有助于展示这一点。覆盖 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 消息。
于 2017-01-17T20:08:03.143 回答