Форум » [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

Dima: hb_gtInfo(HB_GTI_CODEPAGE, 255) PS Полный текст исходника давай в следующий раз

Sergy: Dima пишет: hb_gtInfo(HB_GTI_CODEPAGE, 255) Чет не пошло никак... PS Полный текст исходника давай в следующий раз Сорри [pre2] FUNC Main REQUEST HB_LANG_RU866 REQUEST HB_CODEPAGE_RU866 HB_LANGSELECT("RU866") HB_CDPSELECT("RU866") #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 ) hb_gtInfo( HB_GTI_CODEPAGE, 255 ) // почему-то все равно кракозябры... hb_gtInfo( HB_GTI_ICONFILE, "trade.ico" ) // и как загружать иконку из ресурса программы ? - новый драйвер игнорирует команду -icon= в hbp ? ? "Проверка шрифта Splushka.fon (aka Terminal 12*28)" WAIT QUIT RETURN [/pre2]

Sergy: Вот сам шрифт Splushka.fon: https://dl.dropboxusercontent.com/s/4bngq8tox32k3dm/splushka.fon?token_hash=AAH3LAd8t6uPfI3Hpu-x7d-F3ekaWi_xFp7DT1VKcdAH4Q&dl=1 с GTWIN, Clipper(ntvdm) и Far работает прекрасно, а тут - кракозябры...


PSP: Sergy пишет: hb_gtInfo( HB_GTI_FONTNAME, "Terminal" ) Это точно ПРАВИЛЬНОЕ название? Как его винда отображает?

Dima: Sergy пишет: hb_gtInfo( HB_GTI_ICONFILE, "trade.ico" ) Hb_GtInfo( HB_GTI_ICONRES...........

Dima: Sergy пишет: hb_gtInfo( HB_GTI_FONTNAME, "Terminal" ) В Harbour 2.0 все нормик а вот в 3.2 да крякозяблы

Sergy: PSP пишет: Это точно ПРАВИЛЬНОЕ название? Как его винда отображает? В свойствах ярлыка (или программы) он виден как "точечные шрифты" двух размеров: 10х21 и 12х28 Файл - splushka.fon (ссылку давал). встроенный просмотрщик шрифтов Windows называет его "Terminal 16". По сути - он такой командой подключается, это видно по форме букв/цифр. Но что-то не так с кодировкой. Dima пишет: Hb_GtInfo( HB_GTI_ICONRES Спасибо, помогло. Долго мучался, пока понял, что иконку нужно задавать по порядковому номеру, а не имени.

Dima: Sergy пишет: встроенный просмотрщик шрифтов Windows называет его "Terminal 16" А вот так нормик hb_gtInfo( HB_GTI_FONTNAME, "Terminal 16" )

PSP: Sergy пишет: встроенный просмотрщик шрифтов Windows называет его "Terminal 16" Dima пишет: А вот так нормик hb_gtInfo( HB_GTI_FONTNAME, "Terminal 16" ) Вот тожжж... ))) Просто Terminal - это совсем не тот шрифт.

Sergy: Dima пишет: А вот так нормик hb_gtInfo( HB_GTI_FONTNAME, "Terminal 16" ) А у меня так включается стандартный для GTWVT, наверное Courier. Но без кракозябр, разумеется. У тебя начертание шрифта получилось таким, как в первом сообщении темы ?

PSP: Sergy а включен ли у тебя Clear Type в свойствах экрана? )))

Dima: Sergy hb_gtInfo(HB_GTI_FONTQUALITY,4) // с цифиркой поиграйся

Andrey: Попробуй посмотреть прогу, Я её делал для хХарбора, но потом так и не доделал для Харбора. Но шрифты ,она показывает нормально. http://files.mail.ru/1770CC824FB043A69486B4955A1EF7DE Для хХарбора: http://files.mail.ru/BA1F70EC314A4810A2254B0B13F799E2

Sergy: PSP пишет: а включен ли у тебя Clear Type в свойствах экрана? ))) немного не понял... Clear Type нужно как-то включить в самой винде ? Но ведь Far показывает этот шрифт без проблем. GTWIN - тоже.

Sergy: Dima пишет: hb_gtInfo(HB_GTI_FONTQUALITY,4) // с цифиркой поиграйся Пробовал от 0 до 5 - начертание шрифте не меняется, по-прежнему показывает Courier Как понял, от цифр зависит "мягкость" прорисовки". 0..1 -мягко 3..5 - жестко и угловато...

Sergy: Andrey пишет: Попробуй посмотреть прогу, Я её делал для хХарбора, но потом так и не доделал для Харбора. Но шрифты ,она показывает нормально. http://files.mail.ru/1770CC824FB043A69486B4955A1EF7DE Спасибо, пригодится. Попытаюсь разобраться.

Sergy: И еще непонятно - при запуске программы с GTWVT возникает ДВА окна: одно черное и пустое, с иконкой, которая "должна быть", а второе - собственно с самой программой. Когда выходишь из программы - оба окна закрываются.

Dima: Sergy пишет: И еще непонятно - при запуске программы с GTWVT возникает ДВА окна как вариант опция hbmk2 -gui

Sergy: Dima пишет: как вариант опция hbmk2 -gui Заработало. Попробовал опцию -gtwvt - тоже норм. Спасибо.

Dima: Sergy пишет: hb_gtInfo( HB_GTI_FONTWIDTH, 12 ) hb_gtInfo( HB_GTI_FONTSIZE, 28 ) Такой подход хорош если у всех твоих юзеров установлено одно и тоже разрешение экрана. А если нет , то надо учитывать и разрешение экрана.

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.

Sergy: Вопрос по GTWVG: Почему не отрабатывает команда hb_gtInfo( HB_GTI_SETPOS_XY , {x,y}) ? написал INIT/EXIT процедуры, сохраняющие состояние окна: выбранный шрифт, положение, начертание, размер и тп. В GTWVT - работает, тут - нет. Все восстанавливается, но окно - только по центру экрана. Каждый раз после запуска юзерам перетаскивать мышкой на "удобное" место - ппц радость какая...

SergKis: Sergy может надо использовать (см. wvgwin.c) HB_FUNC( WVG_MOVEWINDOW ) получи hb_Func список с *.c файлов - много интересного

Sergy: SergKis пишет: может надо использовать (см. wvgwin.c) HB_FUNC( WVG_MOVEWINDOW ) Хотелось-бы некой стабильности, чтобы не нужно было выискивать и переписывать отдельные вызовы при смене драйвера экрана. Ведь они должны отрабатывать одинаковые вызовы с однотипными результатами. Как оказалось, несовместимость формы вызова GTWVG драйвере. Пофиксено только что: 2014-09-18 00:23 UTC-0800 Pritpal Bedi (bedipritpal/at/hotmail.com) * contrib/gtwvg/gtwgud.c + Added: hb_gtInfo( HB_GTI_SETPOS_XY, { nRow|nX, nCol|nY } ) in addition to previous implementation.

SergKis: Sergy пишет:Хотелось-бы некой стабильности у меня WVG (hb 2.0) закончилась тестами с меню - все работало, мой товарищ перевел достаточно большую задачу (2.5 -года назад), все очень стабильно, но мы сразу ушли в MiniGUI. Т.е. мой товарищ перевел в gui полностью эту же задачу (клиентам больше нравится), а я в консоли на hb (bat-ы крутятся) заменяю режимы вызовами MiniGUI (справочники, вызов справочников в документах), грузится и работает очень быстро (все с LetoDb). И т.к. Linuks у нас в стране погиб, то WVT не актуален, а gui рулит. В MiniGui есть режим совмещенный с WVT, смотрел пример в поставке и все ..., детали надо проверять

SergKis: Sergy пишет:должны отрабатывать одинаковые вызовы с однотипными результатами. попробуй др. строку (hbgtinfo.ch) ... #define HB_GTI_SETPOS_XY 55 /* Get/Set current top-left position coordinates of the window by pixels */ #define HB_GTI_SETPOS_ROWCOL 56 /* Set current top-left position coordinates of the window by row/cols */

Sergy: Dima пишет: Использую под GTWVT , EXECANDWAIT ,работает нормально. BAT файлы запускать не пробовал , запускаю EXE. Только что обнаружил, что hb_ProcessRun() при вызове программы с GUI "замораживает" рабочее окно программы. Просто получается белый квадрат. Точно такое-же поведение дает EXECANDWAIT(), взятый отсюда: http://clipper.borda.ru/?1-4-0-00000327-000-40-0 Т.е. получается, если нужно дождаться завершения работы вызванной программы - hb_ProcessRun() или EXECANDWAIT(), но окно программы под GTWVT/GTWVG не обновляется. Совсем. Если нужно, чтобы окно обновлялось - нужен вызов ShellExecute(), но при этом программа не дожидается завершения... Может что-то я упустил ? Спасибо

azoo: У меня строчка указана: hb_gtInfo(HB_GTI_FONTNAME, 'Lucida Console') Почему на разных мониторах окно программы выглядит по-разному. В частности шрифты.

Dima: azoo пишет: hb_gtInfo(HB_GTI_FONTNAME, 'Lucida Console') После нее добавь пару строчек и попробуй [pre2] HB_GtInfo(HB_GTI_FONTSIZE , Int(HB_GtInfo(HB_GTI_DESKTOPHEIGHT)/25)) HB_GtInfo(HB_GTI_FONTWIDTH, Int(HB_GtInfo(HB_GTI_DESKTOPWIDTH)/80)) hb_gtInfo(HB_GTI_FONTQUALITY,4) setmode(25,80) [/pre2]

azoo: Dima , я FONTSIZE и FONTWIDTH вообще не указывал. Добавил эти строки разницы не заметил (у меня размер окна 40*100). Но обнаружил, что на одинаковых разрешенииях шрифты отображаются одинаково на разных мониторах, даже если один 19", а другой 17". Когда на одном десктопе 1280*1024 - всё нормально, но при 1024*768 шрифт очень тонкий. Вот такой эффект. Хотя казалось бы должно быть наоборот.

Dima: azoo пишет: но при 1024*768 шрифт очень тонкий. CLEARTYPE в настройках винды включен ? Я про https://ru.wikipedia.org/wiki/ClearType

Dima: azoo пишет: Добавил эти строки разницы не заметил (у меня размер окна 40*100) это в строках и колонках ? коли так там и коэффициенты будут другие. HB_GtInfo(HB_GTI_FONTSIZE , Int(HB_GtInfo(HB_GTI_DESKTOPHEIGHT)/40)) HB_GtInfo(HB_GTI_FONTWIDTH, Int(HB_GtInfo(HB_GTI_DESKTOPWIDTH)/100)) Setmode(40,100)

azoo: Dima пишет: HB_GtInfo(HB_GTI_FONTSIZE , Int(HB_GtInfo(HB_GTI_DESKTOPHEIGHT)/40)) HB_GtInfo(HB_GTI_FONTWIDTH, Int(HB_GtInfo(HB_GTI_DESKTOPWIDTH)/100)) Setmode(40,100) Тут всё понятно, конечно 40 и 100 Dima пишет: CLEARTYPE в настройках винды включен ? Я про https://ru.wikipedia.org/wiki/ClearType Это решило проблему. Я раньше заметил, что шрифт утончается только на Windows XP, на Windows 7 всё нормально. Про ClearType не знал. Когда его включил, стало всё как надо, т.е. на любых разрешениях шрифты одинаковой толщины. Век живи, век учись. Спасибо.

Dima: azoo А у тебя окошко на весь экран ? Могу предложить вариант WVT_SETMODE

azoo: Dima пишет: А у тебя окошко на весь экран ? Могу предложить вариант WVT_SETMODE Да, я использую функцию WVT_SETMODE. Окно не на весь экран. Получается равномерный отступ от краёв рабочего стола. Единственный небольшой минус - это при использовании на широкоформатных мониторах шрифты слишком растянуты по горизонтали.

Dima: azoo пишет: Да, я использую функцию WVT_SETMODE Выложи ее , хочу взглянуть , возможно твоя более совершенна.

azoo: Функция WVT_SETMODE из форума: Смена "режима" под GTWVT Эти 2 темы можно объединить в одну.



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