I've needed to get the directory a program was running several times.
I've used it to determine where configuration files could be found.
I've used it for determining where images should be stored/loaded.
I've also had to write it from scratch several times :( .
I'm submitting it here so hopefully someone else doesn't have
to figure it out themselves.
I've found that using
_getcwd isn't accurate whenever the user is allowed
to use the file dialogs to open or save files. If they move to
a different directory in the file dialogs, the current working
directory is changed as well
GetModuleFileName(AfxGetInstanceHandle(), FileName, MAX_PATH);
RtnVal = FileName;
RtnVal = RtnVal.Left(RtnVal.ReverseFind('\\'));
It's not much, but I've found it helpful and hope
that someone else will as well.