![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Корявая GetOpenFileName [D7, Win95/98, WinXP]
Alexiy © (2004-07-12 14:53:00)Посмотрел чень много форумов, где обсуждалась эта тема. Но ответ не найден. Эта функция возвращает false. И диалога конечно, не появляется.
Одни говорят, что в 98 диалог будет, а в ХР - нет. Другие - что надо инициализировать переменную lpstrFile даже был вариант, сделать так:
ofn.lpstrFile:=VirtualAlloc(0, 255, MEM_COMMIT, PAGE_READWRITE);
Если кто-то располагает РАБОЧИМ кодом, поделитесь, плз..
Alexiy (2004-07-13 15:37:00) [1]Низкоуровневая отладка рулит!
clickmaker (2004-07-12 17:55:00) [2]
> Alexiy (12.07.04 15:59) [3]
Хм... Всю жизнь это работало
ofn.lStructSize:=sizeof(OPENFILENAME);
Alexiy (2004-07-12 16:24:00) [3]Всё, сделал. lStructSize:=$4C;
Удалите эту тему плз...
Alexiy (2004-07-12 15:59:00) [4]Код ошибки: $0001 =
CDERR_STRUCTSIZE - Элемент lStructSize структуры инициализации для соответствующего стандартного диалогового окна недопустим.
???
Alexiy (2004-07-12 15:20:00) [5]так и знал. Вот:
{ isFile: array[0..max_path] of char; - это в var есс-но }
ZeroMemory(@ofn, sizeof(OPENFILENAME));
ofn.lStructSize:=sizeof(OPENFILENAME);
ofn.hWndOwner:=GetActiveWindow();
ofn.hInstance:=0;
ofn.lpstrFile:=isFile;//VirtualAlloc(0, 255, MEM_COMMIT, PAGE_READWRITE);
ofn.nMaxFile:=200;
ofn.lpstrTitle:='Choose file...';
ofn.lpstrFilter:='PE format'+#0+'*.exe'+#0+'All file types'#0+'*.*'+#0#0;
ofn.nFilterIndex:=1;
ofn.lpstrFileTitle:=0;
ofn.lpstrInitialDir:='c:\';
ofn.nMaxFileTitle:=255;
ofn.Flags:=OFN_PATHMUSTEXIST Or OFN_FILEMUSTEXIST Or OFN_HIDEREADONLY;
GetOpenFileName(ofn);
На выходе - пустая ofn.lpstrFile
Да даже если по шаблону МСДН скопировать - нет результата
clickmaker (2004-07-12 14:58:00) [6]
> Alexiy (12.07.04 14:53)
поделись своим кодом лучше