Правая кнопка мыши в окне FileOpenDialog выдает ошибку

У меня есть FileOpenDialog, который получает имя выбранной папки, это прекрасно работает, однако, когда я щелкаю правой кнопкой мыши по элементу в папке или другой папке, приложение вылетает и выдает необработанное исключение: модуль не найден. Я бы хотел использовать правую кнопку мыши, чтобы не блокировать ее. Я ищу решение для обработки ввода с помощью правой кнопки мыши, чтобы приложение не зависало.

HWND Hwnd;
std::vector<std::string> openFileDialog(std::vector<COMDLG_FILTERSPEC> filterSpec, bool allowMultiSelect)
{
std::vector<std::string> paths;

IFileOpenDialog *pFileOpen;

HRESULT hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL, IID_IFileOpenDialog, reinterpret_cast<void**>(&pFileOpen));
if (SUCCEEDED(hr))
{
if (allowMultiSelect)
{
pFileOpen->SetOptions(FOS_ALLOWMULTISELECT);
}
pFileOpen->SetFileTypes(filterSpec.size(), filterSpec.data());

hr = pFileOpen->Show(Hwnd);
if (SUCCEEDED(hr))
{
IShellItemArray* results;
hr = pFileOpen->GetResults(&results);

pFileOpen->GetResults(&results);
DWORD itemCount = 0;
DWORD iterator = 0;
results->GetCount(&itemCount);

if (SUCCEEDED(hr))
{
for (iterator = 0; iterator < itemCount; iterator++)
{
PWSTR pszFilePath;
IShellItem *pItem;
results->GetItemAt(iterator, &pItem);
hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath);
if (SUCCEEDED(hr))
{
LPWSTR path = pszFilePath;
std::wstring file = path;
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> convert;
paths.push_back(convert.to_bytes(file));

}
pItem->Release();
}
}
}
}

pFileOpen->Release();
if (paths.size() == 0)
paths.push_back("FAILED");

return paths;

}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]