Автор | Сообщение |
|
| постоянный участник
|
Пост N: 53
Зарегистрирован: 15.09.05
|
|
Отправлено: 11.06.09 13:08. Заголовок: Terminal WVT & EXIT PROCEDURE
Привет всем на форуме ! Перекомпилировал один из своих проектов 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
[только новые]
|
|
|
| постоянный участник
|
Пост N: 677
Зарегистрирован: 09.10.06
|
|
Отправлено: 11.06.09 13:22. Заголовок: Проще всего запретит..
Проще всего запретить этот самый крестик hb_GtInfo( HB_GTI_CLOSABLE, .f. )
|
|
|
|
| moderator
|
Пост N: 196
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.06.09 13:28. Заголовок: hb_gtinfo( HB_GTI_NO..
hb_gtinfo( HB_GTI_NOTIFIERBLOCK, bCodeBlock ) устанавливает кодоблок bCodeBlock, выполняющийся при нажатии крестика. Если блок возвращает 0, приложение завершается, если другое число - продолжает работу.
|
|
|
|
| постоянный участник
|
Пост N: 54
Зарегистрирован: 15.09.05
|
|
Отправлено: 11.06.09 13:28. Заголовок: Спасибо за ответ !
Спасибо за ответ Петр и вам Александр ! а где можно почитать об етих функциях , неужели только копаясь в изходниках Харбура Еще раз спасибо !
|
|
|
|
| moderator
|
Пост N: 197
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.06.09 13:32. Заголовок: Увы ... Именно так я..
Увы ... Именно так я это сейчас и нашел ... Можно еще, конечно, порыться в архивах майл-листов или comp.lang.xharbour
|
|
|
|
| |
Пост N: 327
Зарегистрирован: 08.04.06
|
|
Отправлено: 12.06.09 01:30. Заголовок: alkresin пишет: hb_..
alkresin пишет: цитата: | hb_gtinfo( HB_GTI_NOTIFIERBLOCK, bCodeBlock ) |
| Жаль, что нельзя запретить закрытие программы по кресту в оконном режиме терминала GTWIN...
|
|
|
|
| |
Пост N: 1248
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.06.09 08:05. Заголовок: Лукашевский пишет: ..
Лукашевский пишет: цитата: | Жаль, что нельзя запретить закрытие программы по кресту в оконном режиме терминала GTWIN |
| Ня ;) SetConsoleTitle("TEST") do WHILE ( hWnd:= FindWindow( "TEST" ) ) == 0 ENDdo DeleteCloseButton( hWnd)
|
|
|
|
| |
Пост N: 328
Зарегистрирован: 08.04.06
|
|
Отправлено: 12.06.09 10:39. Заголовок: Dima пишет: SetCons..
Dima пишет: цитата: | SetConsoleTitle() FindWindow() DeleteCloseButton() |
| На все функции - Unresolved external при линковке. Откуда брал?
|
|
|
|
| |
Пост N: 1249
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.06.09 10:41. Заголовок: Лукашевский #PRAGM..
Лукашевский #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
|
|
|
|
| |
Пост N: 329
Зарегистрирован: 08.04.06
|
|
Отправлено: 12.06.09 10:58. Заголовок: Dima, спасибо огромн..
Dima, спасибо огромное!!! А может быть, ты ещё знаешь, как в полноэкранном режиме GTWIN убрать курсор мыши (хотя бы сделать его невидимым)? Это одна из последних нерешённых проблем, которая у меня осталась в xHarbour'е...
|
|
|
|
| |
Пост N: 1250
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.06.09 11:02. Заголовок: Лукашевский request..
Лукашевский request HB_NOMOUSE
|
|
|
|
| |
Пост N: 330
Зарегистрирован: 08.04.06
|
|
Отправлено: 12.06.09 11:09. Заголовок: Dima пишет: request..
Dima пишет: Сказка! Фантастика! Удалось!
|
|
|
|
|
| |
Пост N: 331
Зарегистрирован: 08.04.06
|
|
Отправлено: 12.06.09 20:15. Заголовок: Dima пишет: SetCons..
Dima пишет: цитата: | SetConsoleTitle() FindWindow() DeleteCloseButton() |
| Рано я обрадовался... Началась как раз фантастика: 1. Использование SetConsoleTitle() каким-то образом отменяет SetConsoleDisplayMode(1). Причём не важно, где они стоят по отношению друг к другу - до или после. Просто вот если используем SetConsoleTitle(), то SetConsoleDisplayMode(1) - переход в полноэкранный режим выполнения - уже не срабатывает, по крайней мере при установленном в ярлыке запуска режиме совместимости с Win'95. 2. После SetConsoleTitle('ООО "Привет+"') не срабатывает FindWindow('ООО "Привет+"'). Для латиницы FindWindow() работает, для кириллицы - увы, нет... Больше всего, конечно, напрягает пункт 1...
|
|
|
|
| |
Пост N: 1251
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.06.09 20:27. Заголовок: Лукашевский пишет: ..
Лукашевский пишет: цитата: | Для латиницы FindWindow() работает, для кириллицы - увы, нет |
| Так и есть.
|
|
|
|
| |
Пост N: 1252
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.06.09 20:41. Заголовок: Лукашевский Бумс.....
Лукашевский Бумс... а так ? local nStdOut := Hb_GetStdOut() nResult := SetConsoleDisplayMode(nStdOut, CONSOLE_FULLSCREEN)
|
|
|
|
| |
Пост N: 332
Зарегистрирован: 08.04.06
|
|
Отправлено: 12.06.09 21:31. Заголовок: Dima пишет: CONSOLE..
Dima пишет: Откуда берём? В папке INCLUDE ни в одном файле такого нет, в BCC55 - тоже нет, и в скачанных SOURCE'ах - тоже... Ну да ладно, заменил на 1. Ничего не изменилось - как запускается свёрнутым, так и остаётся, пока мышью не тыкнешь. Но когда тыкнешь мышью - да, запускается в полном экране. Может, проблема немного в другом - окно программы при запуске мало того что свёрнуто, так ещё и неактивно. Какую функцию можно использовать для активизации терминального окна? Хотя, с другой стороны - без SetConsoleTitle() окно прекрасно активизируется и разворачивается во весь экран функцией SetConsoleDisplayMode(1), вот в чём фокус.
|
|
|
|
| |
Пост N: 1253
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.06.09 09:48. Заголовок: Лукашевский пишет: ..
Лукашевский пишет: #define CONSOLE_WINDOWMODE 0 #define CONSOLE_FULLSCREEN 1
|
|
|
|
| |
Пост N: 333
Зарегистрирован: 08.04.06
|
|
Отправлено: 13.06.09 10:56. Заголовок: Dima пишет: #define..
Dima пишет: цитата: | #define CONSOLE_FULLSCREEN 1 |
| Понятно. Я так и написал - SetConsoleDisplayMode(nStdOut, 1). Видимый эффект отсутствует.
|
|
|
|
| |
Пост N: 1254
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.06.09 11:35. Заголовок: Лукашевский пишет: ..
|
|
|
|
| |
Пост N: 334
Зарегистрирован: 08.04.06
|
|
Отправлено: 13.06.09 12:38. Заголовок: Dima пишет: Пробни ..
Dima пишет: Всё то же: nStdOut = 1 nResult = 1 Dima пишет: цитата: | Значит ты не там где нужно вставил эту строку. |
| Что значит "не там где нужно"? А где её нужно вставлять?
|
|
|
|
| |
Пост N: 1255
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.06.09 12:50. Заголовок: Лукашевский пишет: ..
Лукашевский пишет: цитата: | Что значит "не там где нужно"? А где её нужно вставлять? |
| Кусок текста покажи.
|
|
|
|
| |
Пост N: 335
Зарегистрирован: 08.04.06
|
|
Отправлено: 13.06.09 12:56. Заголовок: Dima пишет: Кусок т..
Dima пишет: #ifdef __HARBOUR__ sw_harbour = .T. REQUEST HB_GT_WIN REQUEST HB_GT_WVT REQUEST HB_NOMOUSE REQUEST HB_LANG_RU866 HB_LangSelect( "RU866" ) REQUEST HB_CODEPAGE_RU866 HB_SetCodepage( "RU866" ) HB_GtInfo(GTI_CODEPAGE, 255) if HB_GTVERSION() == "WVT" HB_GtInfo(HB_GTI_CLOSABLE, .F.) wint = HB_GtInfo(GTI_DESKTOPWIDTH) v_all = HB_GtInfo(GTI_DESKTOPHEIGHT) HB_GtInfo(GTI_FONTNAME, "Lucida Console") HB_GtInfo(GTI_FONTSIZE, IIF(v_all > 800, 34, IIF(v_all > 640, 18, 16))) HB_GtInfo(GTI_FONTWIDTH, ; IIF(wint > 1024, IIF(RIGHT(winstack, 4) == "0035", 15, 16), ; IIF(wint > 800, 12, 9))) else SetConsoleTitle("TEST") last_time = SECONDS() do while ( hWnd:= FindWindow( "TEST" ) ) == 0 .AND. SECONDS()-last_time < 5 enddo if hWnd > 0 DeleteCloseButton( hWnd) && Удаляем крестик endif nStdOut := Hb_GetStdOut() nResult := SetConsoleDisplayMode(nStdOut, CONSOLE_FULLSCREEN_MODE) MYMSG("nStdOut = " + NTRIM(nStdOut), "nresult = " + NTRIM(nresult)) SetMode(25, 80) endif SET EVENTMASK TO INKEY_LDOWN+INKEY_KEYBOARD SetFileApis() sw_NT = OS_IsWINNT() #endif
|
|
|
|
|
| |
Пост N: 1256
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.06.09 12:59. Заголовок: С ярлыка запускаешь ..
С ярлыка запускаешь ? Если так то смотри его свойства , закладка ярлык - окно - возможно тут у тебя и стоит запускать свернутое в значок
|
|
|
|
| |
Пост N: 336
Зарегистрирован: 08.04.06
|
|
Отправлено: 13.06.09 13:08. Заголовок: Dima пишет: стоит з..
Dima пишет: цитата: | стоит запускать свернутое в значок |
| Нет, стояло - "Обычный размер окна". Поставил "Развёрнутое на весь экран" - и заработало! Нет, ну это же догадаться нужно было!!! В связи с этим неплохо было бы иметь возможность программно изменять свойства ярлыка, - ничего об этом не слышал?
|
|
|
|
| |
Пост N: 1257
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.06.09 17:21. Заголовок: Лукашевский Просто ..
Лукашевский Просто интересно , ты все время вновь собранные программы запускаешь с ярлыка , ведь не удобно же ? :) я например редактирую исходники в Far (+ плагин для Clipper ), в нем же собираю и запускаю. Зачем тебе эти ярлыки для работы ? Ярлык нужен в моем понимании для конечного пользователя.
|
|
|
|
| |
Пост N: 337
Зарегистрирован: 08.04.06
|
|
Отправлено: 13.06.09 18:07. Заголовок: Dima пишет: Ярлык н..
Dima пишет: цитата: | Ярлык нужен в моем понимании для конечного пользователя |
| А я и смотрю всё это с точки зрения конечного пользователя! Юзверь-то однозначно ярлыком будет запускаться! И когда отсылаешь новый вариант проги по электронке, а тебе в ответ - что-то не работает или работает не так - это неприятно: во-первых, потому что очень трудно добиться внятного и подробного ответа, что именно не так, а во-вторых, сам ты со всем этим можешь поковыряться и всё отладить когда тебе удобно, а когда тебе сообщают об ошибке, приходится исправлять её в авральном порядке, и это обычно гораздо менее удобно!
|
|
|
|
| |
Пост N: 340
Зарегистрирован: 08.04.06
|
|
Отправлено: 15.06.09 15:12. Заголовок: Лукашевский пишет: ..
Лукашевский пишет: цитата: | Поставил "Развёрнутое на весь экран" - и заработало! |
| Я рано обрадовался - один раз почему-то запустилось нормально, а потом всё так же - свёрнутым...
|
|
|
|
| постоянный участник
|
Пост N: 130
Зарегистрирован: 27.01.07
|
|
Отправлено: 15.06.09 15:22. Заголовок: Лукашевский, а если ..
Лукашевский, а если запустить напрямую (без ярлыка)?
|
|
|
|
| |
Пост N: 1262
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.06.09 15:27. Заголовок: Лукашевский Не пробо..
Лукашевский Не пробовал ярлык заново создать ? Подозреваю что он у тебя 100 летней давности и создавался для Сlipper приложения.
|
|
|
|
| |
Пост N: 341
Зарегистрирован: 08.04.06
|
|
Отправлено: 15.06.09 15:32. Заголовок: PSP пишет: а если з..
PSP пишет: цитата: | а если запустить напрямую (без ярлыка)? |
| А это смотря откуда... Из "Моего компьютера" и "Проводника" - запускается свёрнутым! А из Нортона или там ДОСовским ярлыком - разворачивается на полный экран, но там какие-то свои вариации, потому что nResult = 1 и в этих случаях, т.е. функция SetConsoleDisplayMode() не отрабатывает!
|
|
|
|
| |
Пост N: 342
Зарегистрирован: 08.04.06
|
|
Отправлено: 15.06.09 15:44. Заголовок: Dima пишет: 100 лет..
Dima пишет: цитата: | 100 летней давности и создавался для Сlipper приложения |
| Я рассматриваю ВСЕ варианты, поэтому у меня оба ярлыка - и ДОСовский, при запуске которым программа нормально разворачивается, но присутствует второе пустое окно (юзвери категорически против ), и обычный виндовый (с тремя закладками в Свойствах), при запуске которым программа не разворачивается.
|
|
|
|
| |
Пост N: 1263
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.06.09 15:50. Заголовок: Лукашевский Брось к..
Лукашевский Брось куда нить EXE (+минимум баз если надо), пробну у себя запустить
|
|
|
|
|
| постоянный участник
|
Пост N: 131
Зарегистрирован: 27.01.07
|
|
Отправлено: 15.06.09 15:50. Заголовок: Попробуй в папке win..
Попробуй в папке windows\prefetch удалить все файлы с именем "ИмяТвоегоФайла-*.pf"
|
|
|
|
| |
Пост N: 344
Зарегистрирован: 08.04.06
|
|
Отправлено: 15.06.09 16:05. Заголовок: PSP пишет: Попробуй..
PSP пишет: цитата: | Попробуй в папке windows\prefetch удалить |
| Вроде бы помогло , но: nResult всё равно 1, что странно... И ещё такая песня - если поставить в свойствах ярлыка "Запускать свёрнутым в значок" - запускается свёрнутым в значок, НО nResult = 0, т.е. функция SetConsoleDisplayMode() рапортует, что она нормально отработала, переключила терминал в полный экран! А программа в это время свёрнута в неактивный значок! Так может быть, дело всё-таки в том, чтобы значок запущенной программы как-то активировать?
|
|
|
|
| постоянный участник
|
Пост N: 132
Зарегистрирован: 27.01.07
|
|
Отправлено: 15.06.09 17:51. Заголовок: Имхо, понятия "П..
Имхо, понятия "Полный экран" и "Развернутое окно" - суть разные. Может в этом путаница?
|
|
|
|
| |
Пост N: 346
Зарегистрирован: 08.04.06
|
|
Отправлено: 15.06.09 18:09. Заголовок: PSP пишет: понятия ..
PSP пишет: цитата: | понятия "Полный экран" и "Развернутое окно" - суть разные. |
| Так и я об этом! Но как развернуть свёрнутое окно терминала, никто пока не ответил...
|
|
|
|
| постоянный участник
|
Пост N: 133
Зарегистрирован: 27.01.07
|
|
Отправлено: 15.06.09 19:00. Заголовок: Раз уж пользуешься я..
Раз уж пользуешься ярлыком, может это поможет?
|
|
|
|
| |
Пост N: 347
Зарегистрирован: 08.04.06
|
|
Отправлено: 15.06.09 19:15. Заголовок: PSP пишет: Раз уж п..
PSP пишет: цитата: | Раз уж пользуешься ярлыком |
| Ярлыком пользуюсь не я, а юзвери (общим числом немножко более 300), это во-первых. Во-вторых, DOS-овский ярлык, который ты отобразил, отпадает - программа с GTWIN по нему открывается в двух окнах - одно пустое, а второе собственно окно программы, и это пустое сильно окно мешается в панели выполнения программ, но если его закрыть, автоматически закрывается и окно программы! И в-третьих, хоть и в Win-ярлыке эта настройка тоже есть, меня ломает настраивать 300 ярлыков вручную, а как это сделать программно - неизвестно, я уже задавал здесь этот вопрос...
|
|
|
|
| постоянный участник
|
Пост N: 134
Зарегистрирован: 27.01.07
|
|
Отправлено: 15.06.09 19:22. Заголовок: Лукашевский пишет: ..
Лукашевский пишет: цитата: | Во-вторых, DOS-овский ярлык, который ты отобразил, |
| Ярлык не DOS-овский. Far - консольное виндовое приложение.
|
|
|
|
| |
Пост N: 348
Зарегистрирован: 08.04.06
|
|
Отправлено: 15.06.09 20:53. Заголовок: PSP пишет: Ярлык не..
PSP пишет: Ну, "старого формата"... как-то его обозвать нужно было. Сделай в Win'XP ярлык на xHarbour'ную программу, и ты увидишь отличия.
|
|
|
Ответов - 39
, стр:
1
2
All
[только новые]
|
|