
Разработка главной программы:
В главной программе подготавливаем диалоговое окно и отображаем его на экране. Для создания файла с главное (любой) программой выполним следующие действия:
Project-> Add to Project -> New -> Fortran Free Format Source File
В окне Name укажем имя файла с главной программой. Обычно, имя файла с главной программой совпадает с именем проекта. Ниже приводится текст главной программы для нашего проекта. Проверьте, чтобы этот файл попал в проект. Для этого должно быть прочекено окно Add To Project.
Программа 3.
program main
use dflogm
implicit none
include "resource.fd"
integer res
logical tf
external onOK, onCancel
type(dialog) dlg
tf = DlgInit(IDD_DIALOG1, dlg)
tf = DlgSetSub(dlg, IDOK, onOK)
tf = DlgSetTitle(dlg, "АРИФМОМЕТЕР")
tf = DlgSetSub(dlg, IDCancel, onCancel)
res = DlgModal(dlg)
End
Строка №2 подключает модуль, содержащий интерфейсы процедур для работы с диалогами. Можно использовать другое имя модуля: use dialogm
Строка №4 включает заголовочный файл с символическими именами ресурсов. В строке №9 используется константа IDD_DIALOG1, а не число 101. Убеждать, что символические константы гораздо лучше буквальных в этом контексте нет необходимости.
В строке №5 объявлена переменная res. Она используется в строке 12 и указывает, с каким кодом завершения закроется наше диалоговое окно. В нашем случае мы ее не используем, но при нескольких диалоговых окнах следующий диалог может определяться результатами работа предыдущего.
Логическая переменная tf (имя выбрано как акроним слов true & false). Большинство диалоговых процедур возвращают true / false в зависимости от успешности ее работы.
Если Вы сомневаетесь в успешности выполнения диалоговой процедуры, проверяйте значения tf после исполнения подозреваемой процедуры.
Строка №7 объявляет имена двух процедур отклика на события click OK и click Cancel.
Строка №8 объявляет переменную производного (derive) типа dlg. Эта переменная в дальнейшем получит (будет инициализирована) все данные нашего окна диалога, и произойдет это в следующей строке.
В строке №9 выполняется инициализация переменной. Диалог представляет собой контейнер, в котором располагаются стандартные элементы управления. С его идентификатором IDD_DIALOG1 связана исчерпывающая информация о всех компонентах окна. Инициализация переменной dlg означает, что вся эта информация о диадоге становится доступной программе через эту переменную. Понятно, что память для этой переменной велика. Поэтому после использования текущего диалога эту переменную можно освободить для дальнейшего использования. Так рекомендуется поступать в документации Fortran, но для современной техники такая позиция выглядит не очень убедительно.
В строках №10 и№11 производится подписка на события Click кнопок OK и Cancel. Обратите внимание на названия процедур. Так процедура инициализации названа DlgInit, что является аббревиатурой Dialog Initialization, а DlgSetSub это Dialog Set Subroutine. Из названия вытекает семантика процедуры. Это является хорошим тонов, и следует брать пример с разработчиков библиотек Fortran’а.
В строке №12 определяем имя диалогового окна.
Строка №13 выводит на экран модальное окно нашего диалога. Модальные окна не позволяют передавать фокус другим окнам, пока не будет закрыто. Передать управление в другое окно становится возможным только после закрытия модального окна. Примером модального окна является интерфейс Блокнота(NotePad), а немодального – интерфейс WORD’а. Диалоговое окно будет располагаться на экране до тех пор, пока одна их программ не закроет наш диалог. Код закрытия диалога используется для дальнейшего ветвления программы.