Автор | Сообщение |
|
| постоянный участник
|
Пост N: 12
Зарегистрирован: 27.01.07
|
|
Отправлено: 04.06.07 21:07. Заголовок: Как запретить закрытие терминального окна "крестом"?
Речь идет об терминальном окне с прогой на xHarbour. Извините за ламерский вопрос. Возможно ли это? Если да, то как? Спасибо.
|
|
|
Ответов - 28
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 708
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.06.07 21:48. Заголовок: Re:
Где то была похожая тема , поищи !
|
|
|
|
| постоянный участник
|
Пост N: 13
Зарегистрирован: 27.01.07
|
|
Отправлено: 07.06.07 20:56. Заголовок: Re:
Не нашёл я ни хрена, чё-та... Сорри...
|
|
|
|
| модератор
|
Пост N: 493
Зарегистрирован: 25.05.05
|
|
Отправлено: 08.06.07 11:19. Заголовок: Рабочий пример
// How to disable Close for console Window Function Main() Local hWnd SetConsoleTitle( "This is my console Title" ) hWnd:= FindWindow( "This is my console Title" ) CLS ? " The close button is Enable " inkey( 0 ) DeleteCloseButton( hWnd) ? " The close button is Disable" inkey(0) Alert("Closing") #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: 14
Зарегистрирован: 27.01.07
|
|
Отправлено: 08.06.07 20:33. Заголовок: Re:
Спасибо огромное!
|
|
|
|
| постоянный участник
|
Пост N: 15
Зарегистрирован: 27.01.07
|
|
Отправлено: 10.06.07 12:29. Заголовок: Re:
Пришлось добавить такой цикл: WHILE ( hWnd:= FindWindow( "Window Title" ) ) == 0 END // WHILE Почему-то иногда hWnd оказывается == 0 и, естественно DeleteCloseButton( hWnd ) ничего не делает. И еще: русские имена окон не прокатывают. Спасибо еще раз!
|
|
|
|
| |
Пост N: 2878
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.03.13 17:35. Заголовок: Может пригодится ком..
Может пригодится кому DeleteCloseButton(GetConsoleWindow()) ЗЫ Mingw #PRAGMA BEGINDUMP #include "hbapi.h" #include "Windows.h" HB_FUNC( DELETECLOSEBUTTON ) { DeleteMenu(GetSystemMenu( (HWND)hb_parnl( 1 ), FALSE), SC_CLOSE, MF_BYCOMMAND ) ; DrawMenuBar( (HWND)hb_parnl( 1 ) ); } WINBASEAPI HWND APIENTRY GetConsoleWindow( VOID ); HB_FUNC( GETCONSOLEWINDOW ) { hb_retnl( (LONG)GetConsoleWindow( ) ) ; } #PRAGMA ENDDUMP
|
|
|
|
| |
Пост N: 290
Зарегистрирован: 12.11.06
|
|
Отправлено: 25.03.13 08:38. Заголовок: Мне отвечали по данн..
Мне отвечали по данному вопросу... 1. Для терминала WIN SetConsoleTitle(Alltrim(cTxt)) hW := FindWindow(Alltrim(cTxt)) DeleteCloseButton(hW) #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 Для WVT ANNOUNCE HB_GTSYS REQUEST HB_GT_WVT REQUEST HB_GT_WVT_DEFAULT HB_gtInfo( HB_GTI_CLOSABLE, .F. ) // Блокирую крестик
|
|
|
|
| Администратор
|
Пост N: 2796
Зарегистрирован: 23.05.05
|
|
Отправлено: 25.03.13 14:44. Заголовок: AndreyZh пишет: HB_..
AndreyZh пишет: цитата: | HB_gtInfo( HB_GTI_CLOSABLE, .F. ) |
| Я смотрю, в Harbour gtwin тоже реализована эта функция. Так что велосипед можно не изобретать. 2010-03-05 11:11 UTC+0100 Viktor Szakats (harbour syenar.net) ... * src/rtl/gtwin/gtwin.c % Simplified the way close button status is retrieved (based on code posted Saulius Zrelskis) + Added code to disable 'close' menu also. This is using undocumented Windows API call, so by default the logic is disabled, and can be enabled with HB_GTWIN_USE_UNDOC_WINAPI macro. (Thanks to Saulius Zrelskis for this API tip) (NOTE: All 'close' controls are controlled by HB_GTI_CLOSABLE) т.е. чтобы открыть эту функцию, надо собрать харбор с макросом HB_GTWIN_USE_UNDOC_WINAPI
|
|
|
|
| |
Пост N: 2886
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.03.13 14:58. Заголовок: Pasha пишет: т.е. ч..
Pasha пишет: цитата: | т.е. чтобы открыть эту функцию, надо собрать харбор с макросом HB_GTWIN_USE_UNDOC_WINAPI |
| а без пересборки ни как ? ;) пересобрать под MinGW это шибко долго будет , вчера уже поигрался.
|
|
|
|
| Администратор
|
Пост N: 2797
Зарегистрирован: 23.05.05
|
|
Отправлено: 25.03.13 15:00. Заголовок: Dima пишет: а без п..
Dima пишет: цитата: | а без пересборки ни как ? ;) |
| Все-таки пересобирать не надо. Хотя в Changelog HB_GTWIN_USE_UNDOC_WINAPI упоминается, в сырцах его уже нет. Можно просто использовать HB_GTI_CLOSABLE
|
|
|
|
| |
Пост N: 2887
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.03.13 15:07. Заголовок: Pasha Да работает о..
Pasha Да работает однако.
|
|
|
|
|
| |
Пост N: 99
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 12:03. Заголовок: Дабы не плодить темы..
Дабы не плодить темы, спрошу здесь: с удалением "крестика" из текущего окна понятно. Но пытливые умы юзеров не находят лучшего применения, чем напакостить программеру. Нету крестика - вызываем "диспетчер задач" и убиваем приложение. Как с этим бороться ? Есть ли в Harbour какой-нить обработчик наподобие onExit, onClose и тп - чтобы при закрытии приложения корректно выйти из базы ? Спасибо.
|
|
|
|
| постоянный участник
|
Пост N: 892
Зарегистрирован: 27.01.07
|
|
Отправлено: 12.08.13 13:30. Заголовок: Sergy Посмотри прим..
Sergy Посмотри пример для терминала gtwvt: harbour\tests\wvtext.prg
|
|
|
|
| |
Пост N: 103
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 13:43. Заголовок: PSP пишет: Посмотри..
PSP пишет: цитата: | Посмотри пример для терминала gtwvt: harbour\tests\wvtext.prg |
| Спасибо, посмотрю. Не могли-бы Вы еще объяснить - что есть по сути "терминал" в понятиях Harbour ? На Clipper моя программа работает в двух основных режимах: локально на машине с удаленной БД (в офисной сети) и на удаленном сервере, у которого БД локальна (через интернет для иногородних клиентов) через Windows Terminal (удаленный доступ). Нигде специальных танцев с бубнами и "терминальных" библиотек не нужно было... Может я чего-то нужное упускаю ?
|
|
|
|
| |
Пост N: 3365
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.08.13 13:51. Заголовок: Sergy пишет: Нигде ..
Sergy пишет: цитата: | Нигде специальных танцев с бубнами и "терминальных" библиотек не нужно было |
| А сейчас понадобились ? Должно и так работать
|
|
|
|
| постоянный участник
|
Пост N: 893
Зарегистрирован: 27.01.07
|
|
Отправлено: 12.08.13 14:12. Заголовок: Sergy При сборке с ..
Sergy При сборке с помощью hbmk2 можно указать, какой терминал будет использован
|
|
|
|
| |
Пост N: 104
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 15:15. Заголовок: PSP пишет: При сбор..
PSP пишет: цитата: | При сборке с помощью hbmk2 можно указать, какой терминал будет использован |
| Немного непонятно - нужен ли мне вообще он или нет. Из консольного окна в GUI переходить планов пока нет. Какие удобства/преимущества и тп дают терминальные драйверы для программы ? PS: используется Win2003 как файловый сервер, на нем-же установлен виндовый RDP сервер, т.е. программы, запущенные на нем, видят базу локально. Клиенты - Win XP SP3.
|
|
|
|
| |
Пост N: 105
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 15:17. Заголовок: Dima пишет: А сейча..
Dima пишет: цитата: | А сейчас понадобились ? Должно и так работать |
| Да просто несколько раз встречался с этим в описаниях Harbour, да и вот отсылка к нему (по поводу возможности убить процесс через диспетчер задач) возникла. Может мне это очень нужно, но я не знаю, зачем...
|
|
|
|
| Администратор
|
Пост N: 2933
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.08.13 15:22. Заголовок: Не могли-бы Вы еще о..
цитата: | Не могли-бы Вы еще объяснить - что есть по сути "терминал" в понятиях Harbour ? |
| Тоже самое, что в клиппере. Это заменяемая библиотека, которая реализует функции ввода/вывода. Просто в клиппер был сделан только под ms dos, терминалов в нем было мало, и альтернативными терминалами мало кто пользовался. Харбор же используется под множество платформ, и под каждую есть как правило несколько терминалов. Что касается windows, это прежде всего gtwin, который работает через консольные средства windows. Примерно 10 лет назад Peter Rees из Новой Зеландии сделал еще один терминал для windows - gtwvt, которые реализован через стандартные графические средства windows, не использует wincon, и поддерживает 100%-ю функциональность харбора. С ним можно использовать различные шрифты, размеры, есть дополнительная библиотека, позволяющая использовать gui-контролы, что-то вроде псевдо-gui С тех пор можно говорить, что у харбора есть 2 стандартных терминала для windows: gtwin и gtwvt. Чтобы их подключить, достаточно опции скрипта для hbmk2. Можно их оба прилинковать к программе, и использовать при необходимости тот или другой.
|
|
|
|
| постоянный участник
|
Пост N: 894
Зарегистрирован: 27.01.07
|
|
Отправлено: 12.08.13 15:41. Заголовок: Sergy пишет: Из кон..
Sergy пишет: цитата: | Из консольного окна в GUI переходить планов пока нет. |
| Дык, как раз "консольное окно" посредством терминала и создается. По-умолчанию используется gtwin. Мне больше нравится gtwvt, он как-то гибче что ли... Посмотрите тот пример, что я выше указал. Скомпилируйте его. Сразу станет интересней )))
|
|
|
Ответов - 28
, стр:
1
2
All
[только новые]
|
|