是否有可能从IFileDialog中删除/隐藏打开的button

我正尝试使用IFileOpenDialog从同一个对话框中select文件和文件夹(在多选模式下)。 我能够添加一个自定义button到对话框,并实现我想要做的事情。 现在我想从对话框中删除默认的“打开”button,因为它的行为取决于select的顺序。 如果首先select文件,然后是文件夹(多选),则会得到OnFileOk事件,但是如果用户先select一个文件夹然后select一个文件,则单击打开button将打开第一个选定的文件夹。 有没有办法删除或隐藏打开button?

我的想法是枚举IFileDialog的子窗口,并删除标题为“打开”和类“button”的孩子。 我试图枚举IFileOpenDialog的子窗口之前做演出,但我只有一个类“Button”的孩子,但其标题是“开始”。 我无法find隐藏“打开”button的标准方法。 请让我知道是否有任何其他方式做到这一点。

谢谢,Abhinay。

Buke的 方法为我工作,但你必须等到对话框控件被创建。 似乎每次创建对话框OnFolderChange()被调用,所以我只是在那里添加我的隐藏代码:

 STDMETHODIMP FileDialogEventHandler::OnFolderChange(IFileDialog* fileDialog) { IOleWindow *pWindow = NULL; HRESULT hr = fileDialog->QueryInterface(IID_PPV_ARGS(&pWindow)); if (SUCCEEDED(hr)) { HWND hwndDialog; hr = pWindow->GetWindow(&hwndDialog); HWND openButton = GetDlgItem(hwndDialog, IDOK); ShowWindow(openButton, SW_HIDE); pWindow->Release(); } return S_OK; } 

如果您知道对话框项目号码(您可以使用Spyxx找到按钮ID),您可能可以这样做:

 HWND hOpenButton = GetDlgItem( hDlg, itemID ); ShowWindow( hOpwnButton, SW_HIDE ); 
 IFileDialogCustomize::RemoveControlItem