Суббота, 28 Декабря 2024, 13:50

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблема с типами в VC++ 2008
scriptoДата: Суббота, 18 Декабря 2010, 21:51 | Сообщение # 1
был не раз
Сейчас нет на сайте
Помогите пожалуйста.
имеется функция
int GetFileName(HWND hWnd)
{
OPENFILENAME ofn;
TCHAR szFilter[80] = L"TextFiles\0 *.txt\0";
TCHAR szFileTitle[80];
FileName[0] = '\0';
szFileTitle[0] = '\0';
memset(&ofn,0,sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hWnd;
ofn.lpstrFilter = szFilter;
ofn.nFilterIndex = 1;
ofn.lpstrFile = FileName;
ofn.nMaxFile = sizeof(FileName);
ofn.lpstrFileTitle = szFileTitle;
ofn.nMaxFileTitle = sizeof(szFileTitle);

int a = GetOpenFileName(&ofn);
if(GetOpenFileName(&ofn))
return 1;
else
return 0;

}

она все время возвращает 0.Почему?несмотря на то.что файл выбран

noTformaTДата: Суббота, 18 Декабря 2010, 22:22 | Сообщение # 2
Ukrainian independent game developer
Сейчас нет на сайте
попробуй так
Code

nt GetFileName(HWND hWnd)  
{  
OPENFILENAME ofn;  
TCHAR szFilter[80] = L"TextFiles\0 *.txt\0";  
TCHAR szFileTitle[80];  
FileName[0] = '\0';  
szFileTitle[0] = '\0';  
memset(&ofn,0,sizeof(ofn));  
ofn.lStructSize = sizeof(ofn);  
ofn.hwndOwner = hWnd;  
ofn.lpstrFilter = szFilter;  
ofn.nFilterIndex = 1;  
ofn.lpstrFile = FileName;  
ofn.nMaxFile = sizeof(FileName);  
ofn.lpstrFileTitle = szFileTitle;  
ofn.nMaxFileTitle = sizeof(szFileTitle);  

int a = GetOpenFileName(&ofn);  
if(a)  
return 1;  
else  
return 0;
}

smile smile smile


@noTformaT
scriptoДата: Суббота, 18 Декабря 2010, 22:25 | Сообщение # 3
был не раз
Сейчас нет на сайте
Я нашел ошибку.Но спасибо большое за отклик.Ошибка была до функции,а именно
было extern TCHAR FileName[];
исправил на extern TCHAR FileName[100];
и все заработало
InuДата: Суббота, 18 Декабря 2010, 22:27 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Quote (scripto)
int a = GetOpenFileName(&ofn);
if(GetOpenFileName(&ofn))

Значение какого типа возвращает функция GetOpenFileName? Мне кажется, все проблемы из-за того что ты дублируешь вызов этой функции
Quote (scripto)
int a = GetOpenFileName(&ofn);
if(GetOpenFileName(&ofn))

Может достаточно считать результат в переменную а и проверять ее? Или просто проверять значение, без присваивания.


Что же такое?
Многие, очень многие задаются этим вопросом. Так что же такое?
scriptoДата: Суббота, 18 Декабря 2010, 22:39 | Сообщение # 5
был не раз
Сейчас нет на сайте
я сделал следующим образом
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/Но мне говорят ,что срабатывает у других несмотря на юникод.Чем это может быть вызвано у меня?

  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг