![]() |
|
|
![]()
|
|
| FatalError |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 11.4.2006 Репутация: нет Всего: 1 |
Я маленько поюзал эту штуку, что-то не пришел в восторг... Особенно от библиотеки ClearWin+, которая должна помогать в изготовлении ГУЕвых прог под Windows (в смысле прог с GUI). Кое-что не слишком сложное она действительно позволяет сделать очень быстро, какое-нибудь окошко с парой кнопок и текстом (даже с цветным шрифтом, наклонным и т.п.) - не проблема. Чуть посложнее - полный абзац. Во-первых, там такой синтаксис, что сума сойдешь. Все возможности ClearWin+ реализуются вызовом одной-единственной функции, и чтобы библиотека тебя правильно поняла, нужно в этом вызове распихивать управляющие значки типа %tb, %cn и так далее, запомнить которые практически невозможно. А еще надо следить, чтобы был закрывающий значок в нужном месте. И проверять потом, куда закралась ошибка в таких вызовах, напичканных бессмысленными значками, это занятие не для слабонервных. Во-вторых, документация на эту библиотеку в хелпе определенно давно не обновлялась, некоторые примеры оттуда не компилируются. В третьих, поставляемое с компилятором IDE откровенно глючное. Есть, правда, один глюк со знаком плюс: при компиляции программ из командной строки (без IDE) в них не вставляется баннер, указывающий на использование некоммерческого варианта компилятора. В общем, ну его, такое бесплатное, это больше на бета-версию похоже. Я лучше на g95 компилировать буду. |
|||
|
||||
| FatalError |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 11.4.2006 Репутация: нет Всего: 1 |
Я в предыдущем посте высказал подозрение, что фришный компилятор Salford FTN95 - это что-то вроде бета-версии. Похоже, был не так уж неправ. Вот сколько багов они наисправляли к версии 4.9 (у меня стояла 4.8) - взято с сайта их форума:
Глюки с UDT и с динамическими массивами - просто из серии смертельных. Но раз исправили... В общем, скачал более новую версию, буду смотреть. Да, поковырял я их справку, оказалось, что у Salford FTN95 есть определенные удобства для программирования на Win32 API. Можно просто передавать из Фортрана параметры, не заботясь, например, о проблемах несоответствия строк Фортрана и С. Компилятор сам организует временную строковую переменную, припишет к ней нолик и передаст в функцию Win API, а потом вернет в исходную переменную. Можно даже передавать значение из фортрановской строки CHARACTER*(*), по умолчанию компилятор скажет функции Win API, что длина строки равна 256. А можно при вызове самому нужную длину определить. И все эти прибамбасы начинают работать, если функция определена как STDCALL (это - в справке, в инклюдах почему-то C_EXTERNAL). Пустячок, а приятно. |
|||
|
||||
| FatalError |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 11.4.2006 Репутация: нет Всего: 1 |
Ну вот, попробовал с этим Salford FTN попрограммить на Win32 API, основываясь на книжке Васильченко. Результат плачевный. Вы, наверно, будете смеяться, но я не смог объявить функцию WinMain. И явно из-за глюка компилятора. Для написания собственных функций, поддерживающих STDCALL, их нужно для Salford FTN объявить с ключевым словом F_STDCALL. Я объявил, в соответствии с примером из файла справки, а компилятор начал придираться к отсутствию запятых. Нету там запятых в примере! Ну ладно, раз он их хочет, поставил. Все равно не помогло: пошли другие придирки, которые я вообще не понял. Но, в общем, тот вариант объявления собственной STDCALL функции, который описан в справке к компилятору, явно не прокатывает. Опять то ли справка плохая, то ли компилятор глючный. Вспомнил английский, запостил цидулю к ним на форум. Теперь жду ответа.
Это сообщение отредактировал(а) XPEHOMETP - 29.11.2006, 18:49 |
|||
|
||||
| FatalError |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 11.4.2006 Репутация: нет Всего: 1 |
Ответ такой: объявлять функцию WinMain НЕ НУЖНО! Пишется просто PROGRAM..., как всегда в Fortran. Компилятор сам привяжет все к операционной системе. Правда, раз это делает сам компилятор, то программисту нету доступа к HINSTANSE, и программированию на чистом Win32 API наступает полный абзац. Ибо без этого параметра ни класс окошек не зарегистрировать, ни вызвать функцию CreateWindow.
|
|||
|
||||
| FatalError |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 11.4.2006 Репутация: нет Всего: 1 |
Хе-хе, додавил-таки гада! Получилось создать окошко на Win32 API c Salford FTN95! Правда, сначала пришлось применить грязный трюк. Создал маленькое окно с помощью библиотеки ClearWin+, получив на него handle, потом с его помощью функцией GetWindowLong заимел hInstance, а дальше уже все по Васильченко. WNDCLASS пришлось самому определять, не было его в инклюдах, но это мелочи. Теперь экспериментирую потихоньку. Кое-что, похоже, не работает: не удалось запустить GetClientRect, пытаюсь разобраться.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Fortran | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |