CDocument::SetPathName ведет себя по-разному в WinXP и Windows 7

#c #windows-7 #mfc #windows-xp

#c #windows-7 #mfc #windows-xp

Вопрос:

Когда я вызывал CDocument::SetPathName с помощью ‘eererr.hpr’ в Windows XP, он обновляет переменную-член со значением m_strPathName 'C:Program FilesICEHostProjectseererr.hpr'

Когда я выполнил тот же метод в Windows 7, он обновился m_strPathName с 'C:Program FilesICEHosteererr.hpr' Projects отсутствием каталога в этом пути

В чем причина такой разницы в WinXP и Windows 7? На основе какой информации выполняются CDocument::SetPathName обновления m_strPathName ? Как можно добиться одинакового поведения?

Комментарии:

1. Наличие документа внутри C:Program Files является плохим знаком и вызовет проблемы в Windows 7. Пожалуйста, сначала исправьте это, а затем проверьте, не остается ли проблема при сохранении ваших документов в My Documents .

2. @MSalters: У меня такая же проблема, когда я пытался сохранить ‘C:ICE Папка Products ICeHost’

Ответ №1:

SetPathName() вызывает GetFullPathName() , который «объединяет имя текущего диска и каталога с указанным именем файла». Таким образом, разница, вероятно, заключается в том, как получается текущий каталог.

Задокументировано, как CFileDialog выбирает другой исходный каталог в разных ОС (проверьте lpstrInitialDir по следующей ссылке). Возможно, это связано с этим.

Ответ №2:

Возможно, вам потребуется переопределить функцию AddToRecentFileList. Метод Add теперь реализован по-другому в Win7. Проверьте эту ссылку

http://social.msdn.microsoft.com/Forums/en-NZ/vcgeneral/thread/3fcb5f77-3c62-4d62-b01c-89a121ea835f