Steve,
I've been using this without giving it a second thought, and making the main user (me!) go through the directory tree every time. You can take the returned file, and take out the path for input next time as the start location, in which case, it IS the responsibility of the app to keep track of what was selected, and it isn't all that difficult.
But, you can't pick up the path if not file was selected, e.g. the user cancelled.
Your post made me think about the function - and the fact that I'm not finding it very inconvenient. Why? It all boils down to how the program leads the user through file selection.
Have you thought of using BROWSE_FOR_FOLDER@ to define the folder where a user's files are, and keeping track of that? Then he is less likely to wander off track when finding his file (presumably as input), and hence it matters less if you don't keep a track of the path eventually chosen with GET_FILTERED_FILE@, because it isn't far away from the initial directory, and therefore not all that inconvenient to go there. It's what I do.
I see that I save the file path choices in an old-fashioned INI file, and thus they aren't even volatile between runs of the program.
If I was only using GET_FILTERED_FILE@, then I would have found it frustrating to keep retracing the same directory changes each time, which is presumably why you asked.
Apologies, this is a bit convoluted.
Paul, as usual, may have a more elegant answer ...
Eddie