shell32: Add Unicode version of GetFileNameFromBrowse.

Implement GetFileNameFromBrowse as an AW function.
oldstable
Owen Rudge 2009-11-11 10:07:09 -06:00 committed by Alexandre Julliard
parent 4622889bd5
commit e8f05eeff3
3 changed files with 70 additions and 5 deletions

View File

@ -58,7 +58,7 @@
60 stdcall -noname ExitWindowsDialog(long)
61 stdcall -noname RunFileDlg(long long long str str long) RunFileDlgAW
62 stdcall -noname PickIconDlg(long long long long)
63 stdcall -noname GetFileNameFromBrowse(long long long long str str str)
63 stdcall -noname GetFileNameFromBrowse(long long long long str str str) GetFileNameFromBrowseAW
64 stdcall -noname DriveType(long)
65 stdcall -noname InvalidateDriveType(long)
66 stdcall -noname IsNetDrive(long)

View File

@ -167,10 +167,9 @@ DWORD WINAPI ParseFieldAW(LPCVOID src, DWORD nField, LPVOID dst, DWORD len)
}
/*************************************************************************
* GetFileNameFromBrowse [SHELL32.63]
*
* GetFileNameFromBrowseA [internal]
*/
BOOL WINAPI GetFileNameFromBrowse(
BOOL WINAPI GetFileNameFromBrowseA(
HWND hwndOwner,
LPSTR lpstrFile,
DWORD nMaxFile,
@ -214,6 +213,72 @@ BOOL WINAPI GetFileNameFromBrowse(
return ret;
}
/*************************************************************************
* GetFileNameFromBrowseW [internal]
*/
BOOL WINAPI GetFileNameFromBrowseW(
HWND hwndOwner,
LPWSTR lpstrFile,
DWORD nMaxFile,
LPCWSTR lpstrInitialDir,
LPCWSTR lpstrDefExt,
LPCWSTR lpstrFilter,
LPCWSTR lpstrTitle)
{
HMODULE hmodule;
BOOL (WINAPI *pGetOpenFileNameW)(LPOPENFILENAMEW);
OPENFILENAMEW ofn;
BOOL ret;
TRACE("%p, %s, %d, %s, %s, %s, %s)\n",
hwndOwner, debugstr_w(lpstrFile), nMaxFile, debugstr_w(lpstrInitialDir), debugstr_w(lpstrDefExt),
debugstr_w(lpstrFilter), debugstr_w(lpstrTitle));
hmodule = LoadLibraryA("comdlg32.dll");
if(!hmodule) return FALSE;
pGetOpenFileNameW = (void *)GetProcAddress(hmodule, "GetOpenFileNameW");
if(!pGetOpenFileNameW)
{
FreeLibrary(hmodule);
return FALSE;
}
memset(&ofn, 0, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwndOwner;
ofn.lpstrFilter = lpstrFilter;
ofn.lpstrFile = lpstrFile;
ofn.nMaxFile = nMaxFile;
ofn.lpstrInitialDir = lpstrInitialDir;
ofn.lpstrTitle = lpstrTitle;
ofn.lpstrDefExt = lpstrDefExt;
ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_FILEMUSTEXIST;
ret = pGetOpenFileNameW(&ofn);
FreeLibrary(hmodule);
return ret;
}
/*************************************************************************
* GetFileNameFromBrowse [SHELL32.63]
*
*/
BOOL WINAPI GetFileNameFromBrowseAW(
HWND hwndOwner,
LPVOID lpstrFile,
DWORD nMaxFile,
LPCVOID lpstrInitialDir,
LPCVOID lpstrDefExt,
LPCVOID lpstrFilter,
LPCVOID lpstrTitle)
{
if (SHELL_OsIsUnicode())
return GetFileNameFromBrowseW(hwndOwner, lpstrFile, nMaxFile, lpstrInitialDir, lpstrDefExt, lpstrFilter, lpstrTitle);
return GetFileNameFromBrowseA(hwndOwner, lpstrFile, nMaxFile, lpstrInitialDir, lpstrDefExt, lpstrFilter, lpstrTitle);
}
/*************************************************************************
* SHGetSetSettings [SHELL32.68]
*/

View File

@ -53,7 +53,7 @@ void WINAPI SHDestroyPropSheetExtArray(HPSXA);
BOOL WINAPI SHFindFiles(LPCITEMIDLIST,LPCITEMIDLIST);
DWORD WINAPI SHFormatDrive(HWND,UINT,UINT,UINT);
void WINAPI SHFree(LPVOID);
BOOL WINAPI GetFileNameFromBrowse(HWND,LPSTR,DWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR);
BOOL WINAPI GetFileNameFromBrowse(HWND,LPWSTR,DWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
HRESULT WINAPI SHGetInstanceExplorer(IUnknown**);
HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR);
HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR);