Можно ли вызвать собственную процедуру обратного вызова в команде QuickWin `APPENDMENUQQ` - PullRequest
0 голосов
/ 04 сентября 2018

Я строю простой интерфейс базы данных с помощью команд QuickWin на Фортране. Команды APPENDMENUQQ и INSERTMENUQQ обеспечивают вызов процедуры обратного вызова. В документации есть список предопределенных подпрограмм.

Вопрос: Можно ли вызвать процедуру, созданную вами?

Я использую Fortran с компилятором Intel v14.

См .: https://software.intel.com/en-us/fortran-compiler-18.0-developer-guide-and-reference-appendmenuqq-w-s

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

В APPENDMENUQQ укажите обратный вызов в 4-м параметре. Я не знаю, предоставляет ли Intel Compiler те же самые примеры, что и его предок MS PowerFortran, или они были потеряны в его путешествии в DEC, Compaq и Intel.

В MS PowerFortran примеры находятся в каталоге Projects - например, Projects \ Samples \ FPS \ General \ Poker. Если у вас есть это, взгляните на scoring.f90 - довольно много примеров обратных вызовов. В качестве альтернативы, если вы можете получить старые подписные диски MSDN (около 2005-2006), вы можете найти их там.

Обратный вызов принимает одну логическую переменную. Это говорит вам, проверен ли пункт меню. Большинство примеров обратных вызовов выглядят как

subroutine xxx(unused)
logical unused
...
return
call unusedqq(unused)
end subroutine xxx

Это отличается от того, что описал Стив - интерфейс мог измениться при переходе с MS на Intel.

0 голосов
/ 04 сентября 2018

Да, это возможно. Вместо одного из предопределенных имен укажите имя внешней подпрограммы, которая имеет один входной аргумент типа по умолчанию LOGICAL, который указывает, проверяется ли конкретный пункт меню или нет. [Редактировать: это подпрограмма, а не функция.]

Это задокументировано в Справочнике по языку Intel Fortran для APPENDMENUQQ. Вы также можете увидеть Использование Intel® Visual Fortran для создания и сборки приложений для Windows * для получения подробной информации об использовании QuickWin и изменении меню, хотя я отмечаю, что текст здесь не показывает пример обратного вызова пользователя .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...