Last active
August 12, 2022 19:00
-
-
Save hash3liZer/31fc7ffc3e0a3fa15ab3d26d47941084 to your computer and use it in GitHub Desktop.
Open a File Dialog Box
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Specific Extensions | |
// https://cpp.hotexamples.com/examples/-/IFileDialog/SetFileTypeIndex/cpp-ifiledialog-setfiletypeindex-method-examples.html | |
PWSTR OpenFileBox(HWND hWnd) { | |
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | | |
COINIT_DISABLE_OLE1DDE); | |
if (!SUCCEEDED(hr)) { | |
return NULL; | |
} | |
IFileOpenDialog* pFileOpen; | |
// Create the FileOpenDialog object. | |
hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL, | |
IID_IFileOpenDialog, reinterpret_cast<void**>(&pFileOpen)); | |
COMDLG_FILTERSPEC filter[2]; | |
filter[0].pszName = L"JPEG(*.jpg;*.jpeg)"; | |
filter[0].pszSpec = L"*.jpg;*.jpeg"; | |
filter[1].pszName = L"Images (*.jpg;*.jpeg;*.png;*.cur)"; | |
filter[1].pszSpec = L"*.jpg;*.jpeg;*.png;*.cur"; | |
if (!SUCCEEDED(hr)) { | |
return NULL; | |
} | |
// Show the Open dialog box. | |
hr = pFileOpen->SetFileTypes(2, filter); | |
hr = pFileOpen->SetFileTypeIndex(2); | |
hr = pFileOpen->Show(hWnd); | |
if (!SUCCEEDED(hr)) { | |
return NULL; | |
} | |
IShellItem* pItem; | |
hr = pFileOpen->GetResult(&pItem); | |
if (!SUCCEEDED(hr)) { | |
return NULL; | |
} | |
PWSTR pszFilePath; | |
hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath); | |
if (!SUCCEEDED(hr)) { | |
return NULL; | |
} | |
pItem->Release(); | |
pFileOpen->Release(); | |
CoUninitialize(); | |
return pszFilePath; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment