я сделал следующим образом 	 
 if(GetOpenFileName(&ofn)) 
 	 return 1; 
 	else 
 	 return 0;  а спомощью твоего варианта просто сначала проверил значение этой функции и наконец получил 1.Возникает такой вопрос.В свойствах проекта включено юникод.И потому код 
 OPENFILENAME ofn; 
 	char szFilters[80]="Двоичные файлы\0*.dat\0 Все файлы\0 *.*\0"; 
 	char szFileTitle[15]; 
 	FileName[0]='\0'; 
 	 
 	memset(&ofn,0,sizeof(OPENFILENAME)); 
 	ofn.lStructSize=sizeof(OPENFILENAME); 
 	ofn.hwndOwner=hWnd; 
 	ofn.lpstrFilter=szFilters; 
 	ofn.nFilterIndex=1; 
 	ofn.lpstrFile=FileName; 
 	ofn.nMaxFile=(int)sizeof(FileName); 
 	ofn.lpstrFileTitle=szFileTitle; 
 	ofn.nMaxFileTitle=sizeof(szFileTitle); 
 	if(GetOpenFileName(&ofn)) 
 		return 1; 
 	else 
 		return 0; 
 выдает у меня ошибку невозможно преобразовать 'char [80]' в 'LPCWSTR' 
 и также для других char/Но мне говорят ,что срабатывает у других несмотря на юникод.Чем это может быть вызвано у меня?