Still looking in undocshell.h, I see we have:
BOOL WINAPI GetFileNameFromBrowse( HWND hwndOwner, LPSTR lpstrFile, DWORD nMaxFile, LPCSTR lpstrInitialDir, LPCSTR lpstrDefExt, LPCSTR lpstrFilter, LPCSTR lpstrTitle);
But in the Platform SDK's the prototype is:
SHSTDAPI_(BOOL) GetFileNameFromBrowse(HWND hwnd, LPWSTR pszFilePath, UINT cbFilePath,LPCWSTR pszWorkingDir, LPCWSTR pszDefExt, LPCWSTR pszFilters, LPCWSTR pszTitle);
So is this an Ansi or a Unicode function? Or maybe it's one of these AW Ansi/Unicode functions? In that case the implementation is wrong because it definitely expects to receive Ansi strings.
Same question for PickIconDlg().