Форум » [x]Harbour » Переход с GTWIN на GTWVT, все вопросы в одной теме. » Ответить

Переход с GTWIN на GTWVT, все вопросы в одной теме.

Sergy: Давайте обсудим вопросы, связанные с переходом на "усовершенствованный" терминал GTWVT. Для этого, как я понял, нужно лишь включить в текст программы пару строк: #include "hbgtinfo.ch" REQUEST HB_GT_WVT_DEFAULT Все, новый терминал подключен и работает. Не могу понять, как менять кодовую страницу шрифта. Сделал: hb_gtInfo( HB_GTI_FONTNAME, "Terminal" ) hb_gtInfo( HB_GTI_FONTWIDTH, 12 ) hb_gtInfo( HB_GTI_FONTSIZE, 28 ) Чтобы получить вот такой шрифт (присутствует в системе 100% и с ним работает Far и GTWIN): Но почему-то неожиданно на экране появились кракозябры, но шрифт именно тот, который я и хотел. При установке "по умолчанию" или "Lucida Console" все ок. Что я забыл ?

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

Sergy: Dima пишет: Такой подход хорош если у всех твоих юзеров установлено одно и тоже разрешение экрана. А если нет , то надо учитывать и разрешение экрана. У всех установлены экраны минимум 1280*1024 - как самый бюджетный на сегодня вариант. На 1440*1ххх и на 1920*1080 этот шрифт тоже смотрится отлично, просто больше свободного места, если не расширять стандартный SETMODE(25,80)

azoo: Sergy , а в чём преимущества GTWVT ?

Dima: azoo Цитата из доки [pre2] gtwvt - GT driver for MS-Windows. It creates its own GUI window instead of using MS-console window. It allows to change font, window size, etc. Supported only by Windows builds. is a pure console implementation of traditional Clipper terminal taking Windows API as its base console IO protocols. Its OI are rendered in a Windows window and hence all of MSDN is available for use with GTWVT. To let the memory refreshed, I must remind everybody that it is a superb work of Peter Rees contributed to xHarbour on 2003-12-22. gtwvg - GUI emulation of GTWVT. It implements itself on top of GTWVT. GTWVG ( WVTGUI in xHarbour ) offers functions and classes to present a console application look like a windows one. It renderes GUI elements on top of Clipper elements ( GETS, BROWSERS, BOXES, LINES ) which makes them feel like a Windows element. GTWVG can be used with existing code just adding some more code but without sacrificing or modifying old one. Also all IO commands can be rendered on top of the GUI elements [/pre2] А вообще смотри примеры (собирай их) и решай нужен тебе этот терминал или нет


Sergy: azoo пишет: Sergy , а в чём преимущества GTWVT ? Расширенный интерфейс программы - прежде всего реакция на события, такие, как например, закрытие окна "по крестику". Но он тянет за собой совсем ненужный гемор в виде отсутствия в свойствах окна программы диалога выбора шрифтов и перекладывает это на плечи программиста. Зачем так сделано - не совсем понятно.

Dima: Sergy пишет: Но он тянет за собой совсем ненужный гемор в виде отсутствия в свойствах окна программы диалога выбора шрифтов Dima пишет: gtwvt - GT driver for MS-Windows. It creates its own GUI window У какого GUI окна ты видел диалог выбора шрифтов , не считая Far Manager ?

azoo: А вообще смотри примеры (собирай их) и решай нужен тебе этот терминал или нет Цель - использовать в программах не 80*25, а например 120*40.

Dima: azoo пишет: например 120*40 Да это возможно

Sergy: azoo пишет: использовать в программах не 80*25, а например 120*40. не знаю про такие параметры, но 35*100 точно работает под стандартным GTWIN

Dima: да бы новую тему не заводить спрошу тут. Cейчас в приложении GTWVT использую 25 строк и 80 столбцов . Если окно на весь экран (почти) то такой шрифт нормально воспринимается и читается. Порой этого маловато. Не подскажет кто из личного опыта другое кол-во строк и столбцов (большее) да так что бы не сильно мелко было и что бы любое железо держало этот режим. Спасиб. PS Размеры шрифта ставлю так [pre2] nWidth := HB_GtInfo(HB_GTI_DESKTOPWIDTH) nHeight := HB_GtInfo(HB_GTI_DESKTOPHEIGHT) nFontH := Int(nHeight/25) nFontW := Int(nWidth /80) HB_GtInfo(HB_GTI_FONTSIZE , nFontH) HB_GtInfo(HB_GTI_FONTWIDTH, nFontW) setmode(25,80) [/pre2] Вроде не плох режим 35 на 130

petr707: Цитата: "менять кодовую страницу шрифта" Что-то в этой фразе не так. Шрифт Terminal - не TrueType Используйте - Courier New или Lucida Console HB_GtInfo( HB_GTI_FONTNAME , xFONTNAME ) HB_GtInfo( HB_GTI_FONTWIDTH , xFONTWIDTH ) HB_GtInfo( HB_GTI_FONTSIZE , xFONTSIZE ) HB_GTINFO( HB_GTI_SCREENWIDTH , xSCREENWIDTH ) HB_GTINFO( HB_GTI_SCREENHEIGHT, xSCREENHEIGHT ) Окно GTWVT - другое, чем окно GTWIN и управление размерами(шрифтом) - по другому. Еще лучше сделать окно RESIZEABLE и тянуть мышкой за угол окна HB_GTINFO( HB_GTI_RESIZABLE, x ) HB_GTINFO( HB_GTI_CLOSABLE , x ) Окно GTWVT - все окно будет меняться (и размеры шрифтов - пропорционально) будет сохраняться: Число строк *число колонок

petr707: Скомпилировать пример - ниже по тексту. Запустить два раза 1) test.exe //gtwin 2) test.exe //gtwvt Пробовать потянуть окна за правый нижний угол, правой кнопкой мыши - открыть меню окна. Смотрим разницу в поведении окон. У win окна - есть скролинг и окно свойств для выбора шрифта и размера у wvt окна - нет скролинга и нет выбора шрифта в контекстном меню ====================== #include "hbgtinfo.ch" Proc main() Local lGT_WVT := ( hb_gtversion() = "WVT") Local lGT_WIN := ( hb_gtversion() = "WIN") REQUEST HB_GT_WIN REQUEST HB_GT_WVT REQUEST HB_GT_WVT_DEFAULT REQUEST HB_LANG_RU866 HB_LangSelect( "RU866" ) REQUEST HB_CODEPAGE_RU866 HB_CDPSELECT( "RU866" ) // если не указать - будут кракозябры в "АБВГД абвгд" HB_GTINFO( HB_GTI_FONTNAME, "fixed" ) HB_GTINFO( HB_GTI_FONTWIDTH, 9 ) HB_GTINFO( HB_GTI_FONTSIZE, 20 ) ? OS(), VERSION(), DATE(), TIME() ? HB_GTVERSION(), HB_GTVERSION(1) ? "АБВГД абвгд" ? "" inkey(0) return nil

azoo: petr707 , получается разница только в том, что в win-окне шрифт можно выбрать через меню, а в Wvt - путём растягивания окна мышкой.

petr707: в консольном WIN окне - выбор шрифтов ограничен одним набором, в Wvt- другим WVT - реально лучше работать, когда заранее неизвестны размеры и разрешение экрана задачи, например при удаленном терминальном доступе на неизвестный комп. WVT -есть свойство- можно выставить на максимальный размер под текущее разрешение. Сохраняется (число строк*число колонок). Для Win -окна в этом режиме - крайне неудобно подгонять и настраивать размер шрифта.

Sergy: Разбираюсь с GTWVT дальше. Вопрос с запуском внешних команд. 1) Команда __RUN() используется для запуска bat файлов как вынужденная мера, но при запуске приложений, например просмотрщика картинок или чего-то с GUI интерфейсом создает маленькое консольное окно с cmd.exe 2) Команда HB_RUN() - запускает аналогично RUN, но консольное окно cmd.exe вырастает в размер окна запустившего его GTWVT приложения 3) Команда hb_ProcessRun() - работает как нужно, НО: категорически отказывается запускать батники. Даже так: hb_ProcessRun("cmd /c "+cCommand). Мелкое консольное окно "моргает", но находжящиеся внутри батника команды echo / pause не отрабатывают. Да и судя по результатам - батник точно не запускается... Какой способ универсальный ? Наверянка, я что-то упускаю из виду...

Dima: Sergy пишет: 1) Команда __RUN() используется для запуска bat файлов как вынужденная мера, но при запуске приложений, например просмотрщика картинок или чего-то с GUI интерфейсом создает маленькое консольное окно с cmd.exe Картинки можно показывать средствами GTWVT

Sergy: Dima пишет: Картинки можно показывать средствами GTWVT Пока не смог разобраться с правильным масштабированием (с сохранением пропорций). Подскажи плиз, в каком направлении искать. Но в любом случае - это был просто как пример. Всё равно остается потребность в вызове внешних приложений. Нужен универсальный способ (если это возможно).

Dima: Sergy пишет: Пока не смог разобраться с правильным масштабированием (с сохранением пропорций) у себя я сделал так Wvt_DrawImage( 0, 0, MaxRow(), MaxCol(), cfile,,.f.)

Sergy: Вот Przemek пишет про различие в методах запуска тут: https://groups.google.com/forum/#]https://groups.google.com/forum/#!topic/harbour-users/AKswxE07xYo There are two main differences between __RUN()/HB_RUN() and hb_processRun() hb_processRun() was designed to fast execute other processes with the possibility of redirecting their standard input and outputs. It runs them directly without system SHELL as middle layer. __RUN() and HB_RUN() executes system commands sending them to platform dependent SHELL. The second difference is in GT suspending. If you look at __RUN() or HB_RUN() code then you will find that they suspend and resume internally GT calling hb_gtSuspend() and hb_gtResume(). Depending on used GT hb_gtSuspend() makes base environment ready to run child process in system console and hb_gtResume() restores console settings when child process finished. In case of GTWIN, GTOS2 or GTDOS which work on system console window or operate directly on hardware (GTDOS) it's possible to access screen/console data so inside hb_gtResume() they copy the screen data to internal GT screen buffer so later it can be accessed from the Harbour application. That's all. If you need hb_processRun() make the same then you can change it in src/rtl/hbprocfn.c adding inside HB_FUNC( HB_PROCESSCLOSE ) hb_gtSuspend(); just before the line with hb_fsProcessRun() and hb_gtResume(); after this line. Such modification is not planned in core code because by definition hb_processRun() should work as fast as possible and in most of cases the child process output is redirected so it does not affect the screen.

Andrey: Sergy пишет: Вопрос с запуском внешних команд. Sergy пишет: Какой способ универсальный ? ShellExecute ! Примеры запуска для хХарбора - http://file.qip.ru/arch/PGm5DMjR/ShellExecute.html

Dima: Andrey пишет: Sergy пишет: цитата: Вопрос с запуском внешних команд. Использую под GTWVT , EXECANDWAIT ,работает нормально. BAT файлы запускать не пробовал , запускаю EXE.



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