diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-08-10 19:24:24 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-08-10 20:27:48 -0500 |
commit | 3756ae7c8dc60d459511d0b067ebef5efb052746 (patch) | |
tree | 5aa0505d3ab4e4337575597bcad9c6fd641ea78d /src/tools | |
parent | 84e7b6d277e5c3d118e11a45834d420254a758c0 (diff) | |
download | wix-3756ae7c8dc60d459511d0b067ebef5efb052746.tar.gz wix-3756ae7c8dc60d459511d0b067ebef5efb052746.tar.bz2 wix-3756ae7c8dc60d459511d0b067ebef5efb052746.zip |
Use IFileOpenDialog instead of SHBrowseForFolder and GetOpenFileName.
It is the recommended option since Vista and has better long path support.
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/thmviewer/thmviewer.cpp | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/src/tools/thmviewer/thmviewer.cpp b/src/tools/thmviewer/thmviewer.cpp index 38f3c4dc..4230dd35 100644 --- a/src/tools/thmviewer/thmviewer.cpp +++ b/src/tools/thmviewer/thmviewer.cpp | |||
@@ -66,6 +66,13 @@ static void CALLBACK ThmviewerTraceError( | |||
66 | __in va_list args | 66 | __in va_list args |
67 | ); | 67 | ); |
68 | 68 | ||
69 | static COMDLG_FILTERSPEC vrgFilters[] = | ||
70 | { | ||
71 | { L"Theme Files (*.thm)", L"*.thm" }, | ||
72 | { L"XML Files (*.xml)", L"*.xml" }, | ||
73 | { L"All Files (*.*)", L"*.*" }, | ||
74 | }; | ||
75 | |||
69 | 76 | ||
70 | int WINAPI wWinMain( | 77 | int WINAPI wWinMain( |
71 | __in HINSTANCE hInstance, | 78 | __in HINSTANCE hInstance, |
@@ -110,24 +117,8 @@ int WINAPI wWinMain( | |||
110 | if (!sczThemeFile) | 117 | if (!sczThemeFile) |
111 | { | 118 | { |
112 | // Prompt for a path to the theme file. | 119 | // Prompt for a path to the theme file. |
113 | OPENFILENAMEW ofn = { }; | 120 | hr = WnduShowOpenFileDialog(hWnd, TRUE, TRUE, vpTheme->sczCaption, vrgFilters, countof(vrgFilters), 1, NULL, &sczThemeFile); |
114 | WCHAR wzFile[MAX_PATH] = { }; | 121 | if (FAILED(hr)) |
115 | |||
116 | ofn.lStructSize = sizeof(ofn); | ||
117 | ofn.hwndOwner = hWnd; | ||
118 | ofn.lpstrFile = wzFile; | ||
119 | ofn.nMaxFile = countof(wzFile); | ||
120 | ofn.lpstrFilter = L"Theme Files (*.thm)\0*.thm\0XML Files (*.xml)\0*.xml\0All Files (*.*)\0*.*\0"; | ||
121 | ofn.nFilterIndex = 1; | ||
122 | ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; | ||
123 | ofn.lpstrTitle = vpTheme->sczCaption; | ||
124 | |||
125 | if (::GetOpenFileNameW(&ofn)) | ||
126 | { | ||
127 | hr = StrAllocString(&sczThemeFile, wzFile, 0); | ||
128 | ExitOnFailure(hr, "Failed to copy opened file to theme file."); | ||
129 | } | ||
130 | else | ||
131 | { | 122 | { |
132 | ::MessageBoxW(hWnd, L"Must specify a path to theme file.", vpTheme->sczCaption, MB_OK | MB_ICONERROR); | 123 | ::MessageBoxW(hWnd, L"Must specify a path to theme file.", vpTheme->sczCaption, MB_OK | MB_ICONERROR); |
133 | ExitFunction1(hr = E_INVALIDARG); | 124 | ExitFunction1(hr = E_INVALIDARG); |