文件夹以及文件混合选择对话框咋实现?

因为默认的打开按钮在选择了单个文件夹的时候是起导航的作用,所以得换一个按钮来做选择。可以用从IFileDialog查询IOleWindow,之后获得窗口句柄来隐藏标准的按钮。之后用IFileDialogCustomize::AddPushButton新加一个按钮,这个新按钮的处理是放在IFileDialogControlEvents::OnButtonClicked里面。IFileDialogControlEvents::OnButtonClicked的IFileDialog这个参数可以直接通过IServiceProvider查询SID_SFolderView来获得IFolderView2,之后就可以通过IFolderView2::GetSelection获得选择的文件和文件名。在用户一个文件或者文件夹都没有选的场合,应该默认为用户选择了当前的文件夹。保存完了选择的文件和文件名之后,调用IFileDialog::Close关闭窗口收工。


    推荐阅读