Abh*_*ddy 2 windows winapi dialog visual-c++
我正在尝试使用 IFileOpenDialog 从同一个对话框中选择文件和文件夹(在多选模式下)。我能够在对话框中添加一个自定义按钮并实现我想要做的。现在我想从对话框中删除默认的“打开”按钮,因为它的行为取决于选择的顺序。如果先选择一个文件,然后选择一个文件夹(多选),我会收到 OnFileOk 事件,但如果用户先选择一个文件夹然后选择一个文件,则单击打开按钮会打开第一个选定的文件夹。有没有办法删除或隐藏打开按钮?
我的想法是枚举 IFileDialog 的子窗口并删除标题为“打开”和类“按钮”的子窗口。在做节目之前,我尝试枚举 IFileOpenDialog 的子窗口,但我只得到一个类为“Button”的子窗口,但它的标题是“开始”。我找不到隐藏“打开”按钮的标准方法。请让我知道是否还有其他方法可以做到这一点。
谢谢,阿比奈。
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |