There are at least two API functions for this task: GetOpenFileName and GetFileNameFromBrowse.
The latter is a wrapper around the GetOpenFileName. Its interface is more usable in FoxPro, you don't need to allocate memory. Though you need to convert strings between ANSI and Unicode in both directions. Use WideCharToMultiByte and MultiByteToWideChar for the conversion.
Check function declarations at
http://www.news2news.com/vfp/?function=553http://www.news2news.com/vfp/?function=556