Я могу понять вашу первоначальную реализацию, так как поведение CString :: Find (), похоже, со временем изменилось.
Посмотрите документы MSDN для реализации MFC, поставляемые с VC6 здесь и текущую реализацию здесь . Особенно обратите внимание на различия в описании 2-го параметра смещения.
Решение вашей проблемы состоит в том, чтобы, как уже говорилось выше, добавить 1 к смещению поиска последовательных вызовов Find (). Вы также можете искать отдельные символы (или wchar_ts) следующим образом:
myString.Find(_T('\\'), pos+1);
EDIT:
Кстати, взгляните на Path * familly функций, предоставляемых shlwapi.dll, объявленных в shlwapi.h. Особенно вас может заинтересовать функция PathRemoveFileSpec .