On-line: Alex_Cher, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост 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
------------------------------------------------






Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 39 , стр: 1 2 All [только новые]


постоянный участник


Пост N: 677
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 11.06.09 13:22. Заголовок: Проще всего запретит..


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

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 196
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 11.06.09 13:28. Заголовок: hb_gtinfo( HB_GTI_NO..


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 54
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 11.06.09 13:28. Заголовок: Спасибо за ответ !


Спасибо за ответ Петр и вам Александр !

а где можно почитать об етих функциях , неужели только копаясь в изходниках Харбура

Еще раз спасибо !

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 197
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 11.06.09 13:32. Заголовок: Увы ... Именно так я..


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

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 327
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 12.06.09 01:30. Заголовок: alkresin пишет: hb_..


alkresin пишет:

 цитата:
hb_gtinfo( HB_GTI_NOTIFIERBLOCK, bCodeBlock )


Жаль, что нельзя запретить закрытие программы по кресту в оконном режиме терминала GTWIN...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1248
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.06.09 08:05. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
Жаль, что нельзя запретить закрытие программы по кресту в оконном режиме терминала GTWIN



Ня ;)

SetConsoleTitle("TEST")
do WHILE ( hWnd:= FindWindow( "TEST" ) ) == 0
ENDdo
DeleteCloseButton( hWnd)


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 328
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 12.06.09 10:39. Заголовок: Dima пишет: SetCons..


Dima пишет:

 цитата:
SetConsoleTitle()
FindWindow()
DeleteCloseButton()


На все функции - Unresolved external при линковке.
Откуда брал?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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




Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 329
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 12.06.09 10:58. Заголовок: Dima, спасибо огромн..


Dima, спасибо огромное!!!

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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1250
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.06.09 11:02. Заголовок: Лукашевский request..


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


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 330
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 12.06.09 11:09. Заголовок: Dima пишет: request..


Dima пишет:

 цитата:
request HB_NOMOUSE


Сказка! Фантастика! Удалось!

Спасибо: 0 
ПрофильЦитата Ответить





Пост 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...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1251
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.06.09 20:27. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
Для латиницы FindWindow() работает, для кириллицы - увы, нет


Так и есть.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1252
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.06.09 20:41. Заголовок: Лукашевский Бумс.....


Лукашевский
Бумс...
а так ?

local nStdOut := Hb_GetStdOut()
nResult := SetConsoleDisplayMode(nStdOut, CONSOLE_FULLSCREEN)



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 332
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 12.06.09 21:31. Заголовок: Dima пишет: CONSOLE..


Dima пишет:

 цитата:
CONSOLE_FULLSCREEN


Откуда берём?

В папке INCLUDE ни в одном файле такого нет, в BCC55 - тоже нет, и в скачанных SOURCE'ах - тоже... Ну да ладно, заменил на 1. Ничего не изменилось - как запускается свёрнутым, так и остаётся, пока мышью не тыкнешь. Но когда тыкнешь мышью - да, запускается в полном экране.

Может, проблема немного в другом - окно программы при запуске мало того что свёрнуто, так ещё и неактивно. Какую функцию можно использовать для активизации терминального окна?
Хотя, с другой стороны - без SetConsoleTitle() окно прекрасно активизируется и разворачивается во весь экран функцией SetConsoleDisplayMode(1), вот в чём фокус.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1253
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.06.09 09:48. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
Откуда берём?


#define CONSOLE_WINDOWMODE 0
#define CONSOLE_FULLSCREEN 1


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 333
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 13.06.09 10:56. Заголовок: Dima пишет: #define..


Dima пишет:

 цитата:
#define CONSOLE_FULLSCREEN 1


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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1254
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.06.09 11:35. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
Видимый эффект отсутствует.


У меня ведь работает.
Значит ты не там где нужно вставил эту строку.

Пробни так
nResult := SetConsoleDisplayMode(nStdOut, CONSOLE_FULLSCREEN)
SetMode(25,80)

Пример тут
http://clipper.borda.ru/?1-4-0-00000354-000-0-0-1223578034


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 334
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 13.06.09 12:38. Заголовок: Dima пишет: Пробни ..


Dima пишет:

 цитата:
Пробни так



Всё то же:
nStdOut = 1
nResult = 1

Dima пишет:

 цитата:
Значит ты не там где нужно вставил эту строку.


Что значит "не там где нужно"? А где её нужно вставлять?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1255
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.06.09 12:50. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
Что значит "не там где нужно"? А где её нужно вставлять?


Кусок текста покажи.

Спасибо: 0 
ПрофильЦитата Ответить





Пост 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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1256
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.06.09 12:59. Заголовок: С ярлыка запускаешь ..


С ярлыка запускаешь ?
Если так то смотри его свойства , закладка ярлык - окно - возможно тут у тебя и стоит запускать свернутое в значок

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 336
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 13.06.09 13:08. Заголовок: Dima пишет: стоит з..


Dima пишет:

 цитата:
стоит запускать свернутое в значок


Нет, стояло - "Обычный размер окна".
Поставил "Развёрнутое на весь экран" - и заработало!
Нет, ну это же догадаться нужно было!!! В связи с этим неплохо было бы иметь возможность программно изменять свойства ярлыка, - ничего об этом не слышал?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1257
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.06.09 17:21. Заголовок: Лукашевский Просто ..


Лукашевский
Просто интересно , ты все время вновь собранные программы запускаешь с ярлыка , ведь не удобно же ? :)
я например редактирую исходники в Far (+ плагин для Clipper ), в нем же собираю и запускаю. Зачем тебе
эти ярлыки для работы ? Ярлык нужен в моем понимании для конечного пользователя.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 337
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 13.06.09 18:07. Заголовок: Dima пишет: Ярлык н..


Dima пишет:

 цитата:
Ярлык нужен в моем понимании для конечного пользователя


А я и смотрю всё это с точки зрения конечного пользователя! Юзверь-то однозначно ярлыком будет запускаться! И когда отсылаешь новый вариант проги по электронке, а тебе в ответ - что-то не работает или работает не так - это неприятно: во-первых, потому что очень трудно добиться внятного и подробного ответа, что именно не так, а во-вторых, сам ты со всем этим можешь поковыряться и всё отладить когда тебе удобно, а когда тебе сообщают об ошибке, приходится исправлять её в авральном порядке, и это обычно гораздо менее удобно!

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 340
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 15.06.09 15:12. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
Поставил "Развёрнутое на весь экран" - и заработало!


Я рано обрадовался - один раз почему-то запустилось нормально, а потом всё так же - свёрнутым...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 130
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 15.06.09 15:22. Заголовок: Лукашевский, а если ..


Лукашевский, а если запустить напрямую (без ярлыка)?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1262
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.06.09 15:27. Заголовок: Лукашевский Не пробо..


Лукашевский Не пробовал ярлык заново создать ?
Подозреваю что он у тебя 100 летней давности и создавался для Сlipper приложения.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 341
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 15.06.09 15:32. Заголовок: PSP пишет: а если з..


PSP пишет:

 цитата:
а если запустить напрямую (без ярлыка)?


А это смотря откуда... Из "Моего компьютера" и "Проводника" - запускается свёрнутым! А из Нортона или там ДОСовским ярлыком - разворачивается на полный экран, но там какие-то свои вариации, потому что nResult = 1 и в этих случаях, т.е. функция SetConsoleDisplayMode() не отрабатывает!

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 342
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 15.06.09 15:44. Заголовок: Dima пишет: 100 лет..


Dima пишет:

 цитата:
100 летней давности и создавался для Сlipper приложения


Я рассматриваю ВСЕ варианты, поэтому у меня оба ярлыка - и ДОСовский, при запуске которым программа нормально разворачивается, но присутствует второе пустое окно (юзвери категорически против ), и обычный виндовый (с тремя закладками в Свойствах), при запуске которым программа не разворачивается.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1263
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.06.09 15:50. Заголовок: Лукашевский Брось к..


Лукашевский
Брось куда нить EXE (+минимум баз если надо), пробну у себя запустить

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 131
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 15.06.09 15:50. Заголовок: Попробуй в папке win..


Попробуй в папке windows\prefetch удалить все файлы с именем "ИмяТвоегоФайла-*.pf"

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 344
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 15.06.09 16:05. Заголовок: PSP пишет: Попробуй..


PSP пишет:

 цитата:
Попробуй в папке windows\prefetch удалить



Вроде бы помогло , но: nResult всё равно 1, что странно...

И ещё такая песня - если поставить в свойствах ярлыка "Запускать свёрнутым в значок" - запускается свёрнутым в значок, НО nResult = 0, т.е. функция SetConsoleDisplayMode() рапортует, что она нормально отработала, переключила терминал в полный экран! А программа в это время свёрнута в неактивный значок!

Так может быть, дело всё-таки в том, чтобы значок запущенной программы как-то активировать?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 132
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 15.06.09 17:51. Заголовок: Имхо, понятия "П..


Имхо, понятия "Полный экран" и "Развернутое окно" - суть разные. Может в этом путаница?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 346
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 15.06.09 18:09. Заголовок: PSP пишет: понятия ..


PSP пишет:

 цитата:
понятия "Полный экран" и "Развернутое окно" - суть разные.


Так и я об этом! Но как развернуть свёрнутое окно терминала, никто пока не ответил...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 133
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 15.06.09 19:00. Заголовок: Раз уж пользуешься я..


Раз уж пользуешься ярлыком, может это поможет?


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 347
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 15.06.09 19:15. Заголовок: PSP пишет: Раз уж п..


PSP пишет:

 цитата:
Раз уж пользуешься ярлыком


Ярлыком пользуюсь не я, а юзвери (общим числом немножко более 300), это во-первых.

Во-вторых, DOS-овский ярлык, который ты отобразил, отпадает - программа с GTWIN по нему открывается в двух окнах - одно пустое, а второе собственно окно программы, и это пустое сильно окно мешается в панели выполнения программ, но если его закрыть, автоматически закрывается и окно программы!

И в-третьих, хоть и в Win-ярлыке эта настройка тоже есть, меня ломает настраивать 300 ярлыков вручную, а как это сделать программно - неизвестно, я уже задавал здесь этот вопрос...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 134
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 15.06.09 19:22. Заголовок: Лукашевский пишет: ..


Лукашевский пишет:

 цитата:
Во-вторых, DOS-овский ярлык, который ты отобразил,


Ярлык не DOS-овский. Far - консольное виндовое приложение.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 348
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 15.06.09 20:53. Заголовок: PSP пишет: Ярлык не..


PSP пишет:

 цитата:
Ярлык не DOS-овский.



Ну, "старого формата"... как-то его обозвать нужно было. Сделай в Win'XP ярлык на xHarbour'ную программу, и ты увидишь отличия.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 39 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 22
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет