imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 20.10.2005, 15:11     # 1
VENOMOUS SNAKE
Guest
 
Сообщения: n/a

Глюки с GetOpenFileName

Необходимо вызвать стандартноый диалог открытия файла. Всё, что нужно для этого, как я понял, это: функция GetOpenFileName(LPOPENFILENAME) и структура OPENFILENAME. Вроде бы всё просто. Вот этод код я выдрал из хелпа "Win32 Programmer's Reference":
Код:
// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

// Display the Open dialog box. 

if (GetOpenFileName(&ofn)==TRUE)
        hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
        0, (LPSECURITY_ATTRIBUTES) NULL,
        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
        (HANDLE) NULL);
Как я понимаю, это простенький пример открытия файла. Вот только компилер мой с ним не справляется (среда MS Visual Studio .NET). При сборке приложения ни предупреждений, ни ошибок не обнаруживается, но код полностью не выполняется. Выполнение прерывается выходом из функции на строке "ofn.nFilterIndex = 1;". При этом никаких исключений не происходит. Я немного поэкспериментировал, вот результаты. Если закоментировать вызов функции GetOpenFileName(&ofn) (разумеется вместе с условием), то компилятор начинает выдавать ошибку "Local function definations are illegal" и указывает на имя следующей по тексту функции, т.е. намекает, что эта функция была определена внутри текущей, что недопустимо. Замечу, все скобки на месте, синтаксических ошибок нет, просто коментируется условие. Потом выяснилось, что такой результат можно молучить, если закоментировать любую другую строку. Если удалить вызов GetOpenFileName (не коментировать, а удалить), то компилер работает нормально. Если кто знает, в чём дело, пожалуйста, помогите. Если можно, дайте кусочек своего рабочего кода, у кого есть. Заранее спасибо.
 
Старый 20.10.2005, 21:07     # 2
topknot
Junior Member
 
Регистрация: 25.09.2004
Адрес: ніжин
Сообщения: 128

topknot Известность не заставит себя ждатьtopknot Известность не заставит себя ждать
В хелпе врядли могут быть неработающие куски программ, которые, к тому же, миллионы раз были проверены людьми вырезвашими оттуда кусочки. Можно порекомендовать - зайти/выйти, перекомпилировать весь проект полностью, удалить временные и подозрительные файлы ручками, проверить нет ли неправильных (lf only) окончаний строк (в этом случае, если смешаны lf & lf+cr окончания, редактор вижуал студии может неправильно определять где какая строка находится)...
topknot вне форума  
Старый 21.10.2005, 02:52     # 3
VENOMOUS SNAKE
Guest
 
Сообщения: n/a

Да, через полчасика исследований я просёк фишку. В тексте winhelp используется очень интересный формат. Кусок кода я бессовестно скопировал, вот мой вижуал и нахватался всяких неуклюжих символов конца строки. Всё равно, спасибо, что не оставил без внимания.

тема закрыта
 


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 00:40.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.