Форум » [x]Harbour » Terminal WVT & EXIT PROCEDURE » Ответить

Terminal WVT & EXIT PROCEDURE

sashaBG: Привет всем на форуме ! Перекомпилировал один из своих проектов HARBOUR'ом используя терминал WVT Все работает нормально за изключением то что не срабатывает EXIT PROCEDURE при нажатии крестика для закрытия окна . Придется както убирать его или заставить работать EXIT PROCEDURE при нажатии крестика но как . Может у когото приходилось ето делать , Напишите пожалуста ! сборка харбура взята от сюда : http://cch4clipper.blogspot.com/2009/05/latest-developments-in-harbourby-viktor.html с применением новой утилитой HBMK2 Виктора . По моему очень удобная вещь . В начале программы стоит REQUEST HB_GT_WVT REQUEST HB_GT_WVT_DEFAULT hb_gtInfo(HB_GTI_FONTSIZE, 28) hb_gtInfo(HB_GTI_FONTWIDTH, 14) компилирую так : --------------------------------------------- c:\harbour\bin\HBMK2 CCH.HBP -comp=bcc а CCH.HBP содержит: -------------------------- -oCCH -gtWVT K.PRG K11.PRG K12.PRG ASSI.PRG CALC87.PRG LOCKS.PRG TEXTBROW.PRG INSTOGLE.PRG SHADOW.PRG fttext.c ------------------------------------------------

Ответов - 39, стр: 1 2 All

Петр: Проще всего запретить этот самый крестик hb_GtInfo( HB_GTI_CLOSABLE, .f. )

alkresin: hb_gtinfo( HB_GTI_NOTIFIERBLOCK, bCodeBlock ) устанавливает кодоблок bCodeBlock, выполняющийся при нажатии крестика. Если блок возвращает 0, приложение завершается, если другое число - продолжает работу.

sashaBG: Спасибо за ответ Петр и вам Александр ! а где можно почитать об етих функциях , неужели только копаясь в изходниках Харбура Еще раз спасибо !


alkresin: Увы ... Именно так я это сейчас и нашел ... Можно еще, конечно, порыться в архивах майл-листов или comp.lang.xharbour

Лукашевский: alkresin пишет: hb_gtinfo( HB_GTI_NOTIFIERBLOCK, bCodeBlock ) Жаль, что нельзя запретить закрытие программы по кресту в оконном режиме терминала GTWIN...

Dima: Лукашевский пишет: Жаль, что нельзя запретить закрытие программы по кресту в оконном режиме терминала GTWIN Ня ;) SetConsoleTitle("TEST") do WHILE ( hWnd:= FindWindow( "TEST" ) ) == 0 ENDdo DeleteCloseButton( hWnd)

Лукашевский: Dima пишет: SetConsoleTitle() FindWindow() DeleteCloseButton() На все функции - Unresolved external при линковке. Откуда брал?

Dima: Лукашевский [pre] #PRAGMA BEGINDUMP #include "hbapi.h" #include "Windows.h" HB_FUNC( SETCONSOLETITLE ) { hb_retl( SetConsoleTitle( hb_parc( 1 ) ) ) ; } HB_FUNC( FINDWINDOW ) { hb_retnl( (LONG)FindWindow( NULL, hb_parc( 1 ) ) ) ; } HB_FUNC( DELETECLOSEBUTTON ) { DeleteMenu(GetSystemMenu( (HWND)hb_parnl( 1 ), FALSE), SC_CLOSE, MF_BYCOMMAND ) ; DrawMenuBar( (HWND)hb_parnl( 1 ) ); } #PRAGMA ENDDUMP [/pre]

Лукашевский: Dima, спасибо огромное!!! А может быть, ты ещё знаешь, как в полноэкранном режиме GTWIN убрать курсор мыши (хотя бы сделать его невидимым)? Это одна из последних нерешённых проблем, которая у меня осталась в xHarbour'е...

Dima: Лукашевский request HB_NOMOUSE

Лукашевский: Dima пишет: request HB_NOMOUSE Сказка! Фантастика! Удалось!

Лукашевский: Dima пишет: SetConsoleTitle() FindWindow() DeleteCloseButton() Рано я обрадовался... Началась как раз фантастика: 1. Использование SetConsoleTitle() каким-то образом отменяет SetConsoleDisplayMode(1). Причём не важно, где они стоят по отношению друг к другу - до или после. Просто вот если используем SetConsoleTitle(), то SetConsoleDisplayMode(1) - переход в полноэкранный режим выполнения - уже не срабатывает, по крайней мере при установленном в ярлыке запуска режиме совместимости с Win'95. 2. После SetConsoleTitle('ООО "Привет+"') не срабатывает FindWindow('ООО "Привет+"'). Для латиницы FindWindow() работает, для кириллицы - увы, нет... Больше всего, конечно, напрягает пункт 1...

Dima: Лукашевский пишет: Для латиницы FindWindow() работает, для кириллицы - увы, нет Так и есть.

Dima: Лукашевский Бумс... а так ? local nStdOut := Hb_GetStdOut() nResult := SetConsoleDisplayMode(nStdOut, CONSOLE_FULLSCREEN)

Лукашевский: Dima пишет: CONSOLE_FULLSCREEN Откуда берём? В папке INCLUDE ни в одном файле такого нет, в BCC55 - тоже нет, и в скачанных SOURCE'ах - тоже... Ну да ладно, заменил на 1. Ничего не изменилось - как запускается свёрнутым, так и остаётся, пока мышью не тыкнешь. Но когда тыкнешь мышью - да, запускается в полном экране. Может, проблема немного в другом - окно программы при запуске мало того что свёрнуто, так ещё и неактивно. Какую функцию можно использовать для активизации терминального окна? Хотя, с другой стороны - без SetConsoleTitle() окно прекрасно активизируется и разворачивается во весь экран функцией SetConsoleDisplayMode(1), вот в чём фокус.

Dima: Лукашевский пишет: Откуда берём? #define CONSOLE_WINDOWMODE 0 #define CONSOLE_FULLSCREEN 1

Лукашевский: Dima пишет: #define CONSOLE_FULLSCREEN 1 Понятно. Я так и написал - SetConsoleDisplayMode(nStdOut, 1). Видимый эффект отсутствует.

Dima: Лукашевский пишет: Видимый эффект отсутствует. У меня ведь работает. Значит ты не там где нужно вставил эту строку. Пробни так nResult := SetConsoleDisplayMode(nStdOut, CONSOLE_FULLSCREEN) SetMode(25,80) Пример тут http://clipper.borda.ru/?1-4-0-00000354-000-0-0-1223578034

Лукашевский: Dima пишет: Пробни так Всё то же: nStdOut = 1 nResult = 1 Dima пишет: Значит ты не там где нужно вставил эту строку. Что значит "не там где нужно"? А где её нужно вставлять?

Dima: Лукашевский пишет: Что значит "не там где нужно"? А где её нужно вставлять? Кусок текста покажи.



полная версия страницы