Его немного странно. Хорошо, поэтому я работаю с игровым движком OGRE, который имеет класс SceneManager, который поддерживает некоторые потоки файлов, открытые в фоновом режиме. Если я использую эти потоки только ПЕРЕД используя GetOpenFileName() эти потоки работают нормально, но если я пытаюсь использовать эти потоки ПОСЛЕ GetOpenFileName() эти strams будут найдены быть закрыты. Может кто-нибудь пролить некоторый свет, почему GetOpenFileName() убивает мой фон потоки?GetOpenFileName() убивает мои фоновые открытые потоки :(
String Submerge::showFileDialog(char* filters, bool savedialog, char* title)
// need to tweak flags for open/save
{
OPENFILENAME ofn ;
char szFile[255] ;
HWND hwnd = NULL;
//getOgre()->getAutoCreatedWindow()->getCustomAttribute("WINDOW", &hwnd);
ZeroMemory(&ofn , sizeof(ofn));
ofn.hwndOwner = hwnd;
ofn.lStructSize = sizeof (ofn);
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = filters ? filters : "All files\0*.*\0";
ofn.nFilterIndex =1;
ofn.lpstrFileTitle = NULL ;
ofn.nMaxFileTitle = 0 ;
ofn.lpstrInitialDir=NULL ;
if(title!=NULL)
ofn.lpstrTitle=title;
//ofn.Flags = OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST ;
MeshLoadTest(); // this is where i use background file streams
bool success = false;
if(savedialog)
success = GetSaveFileName(&ofn);
else
success = GetOpenFileName(&ofn);
MeshLoadTest(); // this is where i use background file streams
if(!success)
return "";
String str;
str.append(ofn.lpstrFile);
return str;
return "";
}
хммм, что звучит интересно, как остановить такое поведение тогда? –
Я обновил свой ответ с дополнительной информацией. –
Perfecto, это имеет смысл. Я использую winXP и yep, каталог меняется, так как файлы, которые я просматриваю, всегда находятся в другом каталоге. Я немного нуб в программировании win32, поэтому, только если вы можете сказать мне, как записывать и позже восстанавливать рабочий каталог, пожалуйста :) –