Здравствуйте, def0e0, Вы писали:
D>Или может есть какая-то библиотека с помощью которой можно создавать пользовательский интерфейс в графическом режиме?
Если неохота связываться со всем этим, то можно попробовать NXLIB или OpenGUI.
Есть еще замечание насчет компилятора. Скорее всего, у тебя какой-нибудь старый борладовский — и скорее всего он не подойдет для всего вышеуказанного, под DOS лучше использовать DJGPP — порт gcc под DOS.
Здравствуйте, def0e0, Вы писали:
D>Здравствуйте, Аноним, Вы писали:
D>Ух ты! То что надо! Можешь поделится библиотечкой?
Попытался раскопать. К сожалению, то, что я делал для С++, потерялось. Здесь я собрал все постарше, что делал с паскалевским Turbo Vision. Тем не менее, насколько я помню, каких либо специфических проблем с C++ версией не было. Эти исходники можно рассматривать скорее как прототип не очень высокого качества , но тем не менее что-то можно найти. Чтобы убедиться в работоспособности, можно запустить grabber\myshell.exe, предварительно разрешив ему использовать XMS память, и потом открыть, например, pcx\r.pcx. Идея простая, насколько я помню нужно перекрыть функцию отображения знакоместа, пересчет координат мыши и инициализацию/деинициализацию. Знакоместо в функции отображения знакоместа фактически определяется двухбайтовым словом, в нашей функции бит мерцания определяет, показывать ли обычный символ или делать расширенный "рендеринг" фрагмента. Переопределение бита мерцания — это единственная "несовместимость" с TV. Pасширенный "рендеринг" можно реализовывать по-разному, как вариант, отображать эти знакоместа на фрагменты загруженных в память битмапок. Одна деталь исполнения: у меня не было всех исходников TV для Паскаля, и я перекрывал функцию отображения знакоместа через 55h-е прерывание, хакнув tpu файл.
Вопросы are welcome
Это моя текущая работа (т.е. не теоретический, а практический совет).
Компилятор DJGPP, графика рисуется посредством allegro.
GUI можно рисовать непосредственно через allegro, но не очень удобно.
Есть довольно удобная либа — MASking — основные виджеты GUI поверх allegro.
Кстати, если потом будет переход под линух (а в случае серьёзной программы будете вынуждены) то всё это "безобразие" вроде как компилится под никсы (сам пока ещё не пробовал).
Но это в случае, если нет возможности обойтись TurboVision — ибо по простоте и быстродействию с текстовым режимом соревноваться не просто.
Имейте в виду, что большой, красивый, удобный GUI, написанный на MASking будет требовать производительного процессора (особенно в больших разрешениях — 800*600 ещё терпимо работает на Celeron P3 800 MGz) — об этом я ниже писал (работает в ДОСе через VESA биоса, а оно процом рисуется).
И второе — я работаю с версией allegro 4.2.0 и MASking 0.79. Они дружат. Пробовал собирать последние версии — были проблемы даже при сборке, что там будет если пробовать запускать — не знаю.
Если изначально ориентироваться на никс какой-нть, то надо смотреть в сторону более распространённых GUI (QT там всякие и тд). Иначе много всего придётся самому ковырять в allegro и MASking (есть сырые и не удобные места).
Здравствуйте, def0e0, Вы писали:
D>Пишу программу под DOS на С++. ..., для этого использую библиотеку Turbo Vision. Проблема в том, что мне необходимо в одном из окон нарисовать график. Но как это сделать, если весь интерфейс рисуется в текстовом режиме символами? Как в текстовом режиме работать с отдельными пикселями? Или может есть какая-то библиотека с помощью которой можно создавать пользовательский интерфейс в графическом режиме?
Давненько я написал библиотечку для переключения Turbo Vision в графический режим, 100% совместимую с Turbo Vision, оказалось таки довольно легко, по сути два места перекрыть:
Здравствуйте, Пётр Седов, Вы писали:
ПС>Но эта библиотека не имеет отношения к Turbo Vision. Рисовать widget-ы (элементы пользовательского интерфейса) и мышиный курсор придётся самому. Получать мышиный ввод – тоже (если я правильно помню, драйвер мыши доступен через программное прерывание 33h).
Драйвер мыши сам рисует курсор в VGA-режимах.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
ДимДимыч пишет: > Здравствуйте, def0e0, Вы писали: > > D> Но как это сделать, если весь интерфейс рисуется в текстовом режиме > символами? Как в текстовом режиме работать с отдельными пикселями? > > Вообще способ есть, но он Вам вряд ли подойдет. Этот способ позволяет > выводить в текстовом режиме двоичные изображения размером 128x128 с > раскраской отдельного знакоместа 8x16. Реализуется путем > перепрограммирования верхней половины таблицы знакогенератора. > Изображения символов с кодами больше 127 при этом естественно > недоступны. Этот способ используется для вывода логотипа при старте > системы.
Продолжаю тему. Вместо того, чтобы менять старшую половину символов,
начиная с EGA, можно установить режим 512 символов вместо обычных 256
ценой одного бита цвета символа. Дело в том, что таблиц шрифтов может
быть не одна. В видеопамять EGA можно загрузить 4 шрифта, в VGA — 8
одновременно. Специальные видеорегистры позволяют переключать нулевой и
первый шрифт между загруженными. Обычно они указывают на одну и ту же
таблицу — на нулевую. Но можно поставить на разные, это и будет режим
512 символов. Нулевой или первый шрифт будет выбран, зависит от цвета
символа. В стандартной палитре это бит яркости. То есть, если не менять
палитру, то блеклые символы будут одним шрифтом, а светлые — другим. Но,
конечно, лучше поменять. В 8 цветов уложиться реально. Прежние 256
символов пусть будут выглядеть, как обычно, а на новых 256 как раз и
нужно рисовать. Площадь получается в два раза больше при таком подходе.
Я делал программу, которая рисует синусоиду и завершается. Можно было
даже в Norton Commander убрать и показать панели, синусоида остаётся.
В NC цвета преимущественно яркие, поэтому я менял цвет приглашения тоже
на яркий, а синусоиду рисовал на «тёмных» символах.
Если ещё и > 127 задействовать, то площадь в три(!) раза больше.
Пишу программу под DOS на С++. В программе должны быть меню, окна, строка статуса и прочие удобства (например как в TurboPascal'е ), для этого использую библиотеку Turbo Vision. Проблема в том, что мне необходимо в одном из окон нарисовать график. Но как это сделать, если весь интерфейс рисуется в текстовом режиме символами? Как в текстовом режиме работать с отдельными пикселями? Или может есть какая-то библиотека с помощью которой можно создавать пользовательский интерфейс в графическом режиме?
Здравствуйте, def0e0, Вы писали:
D>Пишу программу под DOS на С++. В программе должны быть меню, окна, строка статуса и прочие удобства (например как в TurboPascal'е ), для этого использую библиотеку Turbo Vision. Проблема в том, что мне необходимо в одном из окон нарисовать график. Но как это сделать, если весь интерфейс рисуется в текстовом режиме символами? Как в текстовом режиме работать с отдельными пикселями? Или может есть какая-то библиотека с помощью которой можно создавать пользовательский интерфейс в графическом режиме?
надо выводить текст в графическом режиме
была библиотека zinc с win-подобными окошками, но дальше просмотра демо я с ней дела не имел, написал свое
Здравствуйте, def0e0, Вы писали:
D>Пишу программу под DOS на С++. В программе должны быть меню, окна, строка статуса и прочие удобства (например как в TurboPascal'е ), для этого использую библиотеку Turbo Vision. Проблема в том, что мне необходимо в одном из окон нарисовать график. Но как это сделать, если весь интерфейс рисуется в текстовом режиме символами? Как в текстовом режиме работать с отдельными пикселями? Или может есть какая-то библиотека с помощью которой можно создавать пользовательский интерфейс в графическом режиме?
Я однажды сделал что-то подобное. Это было в прошлом веке на на позапрошлой работе, поэтому исходников нет.
Но идея такая. Память под текстовый режим(CGA — C80) и под графику в DOS разная. А в Turbo Vision кажется можно
и самому назначить буфер под текстовый режим.
1) переходишь в графический режим
2) назначаешь какой-нибудь символ (или несколько ) прозрачным
3) рисуешь графику
4) строишь текстовый интерфейс как обычно
5) заполняешь какое-нибудь текстовое окно прозрачным символом
А теперь фокус
в свободное время в цикле делаешь следующее
Анализируешь буфер текстового режима.
Если символ прозрачный — не делать ничего
Если символ непрозрачный —
a) определить цвет фона и нарисовать прямоугольник нужного цвета
b) определить цвет символа и нарисовать символ
отдельно нарисовать курсор
Была ещё жуткая оптимизация работы с видеопамятью в 16-цветном режиме,
но сейчас это не должно быть критично
Текстовый буфер устроен так
{ char Character;
{int ForeColor :4;
int BackColor :4;
} Attr;
} TextBufer [25/*или сколько там*/][80];
За давностью лет могу перепутать порядок байт (Character и Attr)
Здравствуйте, def0e0, Вы писали:
D> Но как это сделать, если весь интерфейс рисуется в текстовом режиме символами? Как в текстовом режиме работать с отдельными пикселями?
Вообще способ есть, но он Вам вряд ли подойдет. Этот способ позволяет выводить в текстовом режиме двоичные изображения размером 128x128 с раскраской отдельного знакоместа 8x16. Реализуется путем перепрограммирования верхней половины таблицы знакогенератора. Изображения символов с кодами больше 127 при этом естественно недоступны. Этот способ используется для вывода логотипа при старте системы.
D> Или может есть какая-то библиотека с помощью которой можно создавать пользовательский интерфейс в графическом режиме?
Я когда-то давно переписывал библиотеку Turbo Professional для работы с фреймбуфером. Там ничего сложного, только переписать процедуры вывода символов на экран, текстового и мышиного курсора.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
VC>ps интересно, чем мотивировано использование дос?
Ну, во-первых, очень настоятельно рекомендует шеф. А, во-вторых, железо, на котором все это будет работать, не потянет Windows (разве что 95 или 3.11). Я бы конечно все это на линукс посадил, но опять же шеф пока не одобряет...
Здравствуйте, def0e0, Вы писали:
D>Пишу программу под DOS на С++. В программе должны быть меню, окна, строка статуса и прочие удобства (например как в TurboPascal'е ), для этого использую библиотеку Turbo Vision. Проблема в том, что мне необходимо в одном из окон нарисовать график. Но как это сделать, если весь интерфейс рисуется в текстовом режиме символами? Как в текстовом режиме работать с отдельными пикселями? Или может есть какая-то библиотека с помощью которой можно создавать пользовательский интерфейс в графическом режиме?
Мои студенты как-то в качестве курсовой сделали вращающийся кубик в текстовом режиме. Идея лежит в перезагрузке шрифтов в знакогенератор.
Работало все замечательно. Но требует тщательного программирования.
Книжки Фроловых про видеосистемы из библиотеки системного программирования должно быть достаточно. Еще на эту же тему были книжки по программированию игр — там об оптимизации вывода в режиме VGA на аппаратном уровне. К сожалению авторов не помню — более 10 лет назад дело было...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Сергей, Вы писали:
С>Можно попробовать http://www.japheth.de/HX.html — DOS-extender, с кое-какой эмуляцией Win32API. В нем можно использовать порт SDL (http://www.libsdl.org) под Win32, а для SDL существуют библиотеки для GUI, например http://libuta.sourceforge.net/.
С>Если неохота связываться со всем этим, то можно попробовать NXLIB или OpenGUI.
С>Есть еще замечание насчет компилятора. Скорее всего, у тебя какой-нибудь старый борладовский — и скорее всего он не подойдет для всего вышеуказанного, под DOS лучше использовать DJGPP — порт gcc под DOS.
Здравствуйте, def0e0, Вы писали:
D>Пишу программу под DOS на С++. В программе должны быть меню, окна, строка статуса и прочие удобства (например как в TurboPascal'е ), для этого использую библиотеку Turbo Vision. Проблема в том, что мне необходимо в одном из окон нарисовать график. Но как это сделать, если весь интерфейс рисуется в текстовом режиме символами? Как в текстовом режиме работать с отдельными пикселями? Или может есть какая-то библиотека с помощью которой можно создавать пользовательский интерфейс в графическом режиме?
Чисто теоретически, можно сделать текстовый режим поверх графического. (Даже старый добрый CGA это поддерживает).
Но беда в том, что TurboVision работает напрямую с видеобуфером, а не с терминалом, поэтому в лоб, просто переключив видеорежим, не получится.
По мотивам TV были сделаны разные библиотеки, например, Graphics Vision (Гугль в помощь).
Здравствуйте, def0e0, Вы писали:
D>Или может есть какая-то библиотека с помощью которой можно создавать пользовательский интерфейс в графическом режиме?
Borland-овские компиляторы для DOS (C++ и Pascal) предоставляют графическую библиотеку. В C++ надо #include-ить заголовочный файл graphics.h. Ещё там зачем-то есть файл egavga.bgi (BGI = Borland graphics instruments).
Но эта библиотека не имеет отношения к Turbo Vision. Рисовать widget-ы (элементы пользовательского интерфейса) и мышиный курсор придётся самому. Получать мышиный ввод – тоже (если я правильно помню, драйвер мыши доступен через программное прерывание 33h).
LaptevVV уже правильно посоветовал книги серии «Библиотека системного программиста», авторы: Александр Фролов, Григорий Фролов. Если хотите, могу выложить соответствующие тома в электронном виде.
Здравствуйте, Пётр Седов, Вы писали:
ПС>LaptevVV уже правильно посоветовал книги серии «Библиотека системного программиста», авторы: Александр Фролов, Григорий Фролов. Если хотите, могу выложить соответствующие тома в электронном виде.
Буду очень благодарен, если выложите книги! Мне очень пригодятся.
Здравствуйте, def0e0, Вы писали:
D>Кто-нибудь видел Norton PartitionMagic в досе? Как они это сделали кто-нибудь знает?
Сами рисуют все в графическом режиме.
> D>Кто-нибудь видел Norton PartitionMagic в досе? Как они это сделали кто-нибудь знает? > Сами рисуют все в графическом режиме.
Я слышал, там используется библиотека MGL разработки http://www.scitechsoft.com/, для которой, кстати, имеется порт wxWidgets — wxMGL. Вот только сама scitech software, похоже, приказала долго жить...
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Аноним, Вы писали: А>GUI можно рисовать непосредственно через allegro, но не очень удобно.
В смысле? Allegro сам умеет рисовать GUI.
allegro\include\allegro\gui.h
allegro\examples\exgui.c
Здравствуйте, def0e0, Вы писали:
D>Буду очень благодарен, если выложите книги! Мне очень пригодятся.
Файл BSP.zip, лежит здесь: http://slil.ru/25366121
Размер: 1.66 мб
Файл будет удалён через 1 месяц после последнего скачивания.
В архиве:
Файл v02\index.html:
Том 2 «Аппаратное обеспечение IBM PC»
Там в главе 3 описан интерфейс драйвера мыши. Есть примеры кода (dbsp2.zip).
Файл v03\index.html:
Том 3 «Программирование видеоадаптеров CGA, EGA и VGA»
Есть примеры кода (dbsp3.zip).
Файл v21c\index.html:
Том 21 «Программирование видеоадаптеров»
К сожалению, содержимого книги нет, только оглавление. Правда, есть примеры кода (dbsp21.zip).
Файл v33c\index.html:
Том 33 «Аппаратное обеспечение персонального компьютера»
Тоже содержимого нет, есть примеры кода (dbsp33.zip).
Но я Вам не советую тратить время на изучение низко-уровневых деталей видеокарты, это всё давно потеряло актуальность. Лучше использовать какую-нибудь высоко-уровневую графическую библиотеку, вроде Borland-овского graphics.h.
Здравствуйте, ДимДимыч, Вы писали: ДД>Драйвер мыши сам рисует курсор в VGA-режимах.
Да, точно. Том 2 «Аппаратное обеспечение IBM PC»:
Глава 3. Мышь
… 3.2. Драйверы мыши в MS-DOS
…
Драйвер мыши выполняет следующие функции:
* отслеживает перемещения курсора и нажатия на клавиши мыши;
* рисует на экране курсор, повторяющий движения мыши в графическом или текстовом режимах;
* предоставляет программам интерфейс для работы с мышью, основанный на вызове прерывания INT 33h.
Здравствуйте, def0e0, Вы писали: D>Проблема в том, что мне необходимо в одном из окон нарисовать график. Но как это сделать, если весь интерфейс рисуется в текстовом режиме символами?
Может, сделать так. Основной интерфейс сделан с помощью Turbo Vision. Когда нужно показать пользователю график, программа переключается в графический режим и рисует картинку с помощью graphics.h. После того как пользователь увидел всё что хотел, он жмёт Esc и программа возвращается обратно в текстовый режим, в котором за содержимое экрана отвечает Turbo Vision.
Пётр Седов (ушёл с RSDN)
Re[3]: текстовый+графический режим в DOS?
От:
Аноним
Дата:
16.01.08 19:17
Оценка:
Здравствуйте, Пётр Седов, Вы писали:
ПС>В смысле? Allegro сам умеет рисовать GUI.
В прямом смысле — в библиотеке MASking сделано много полезных классов-обёрток вокруг allegro, поэтому через MASking работать с полноценным GUI удобнее.
Re[2]: текстовый+графический режим в DOS?
От:
Аноним
Дата:
17.01.08 07:35
Оценка:
Поддержу.
GUI рисовать в ДОСе в графическом режиме — очень накладно — нет драйверов (если не закладываться на определённое железо), соотв. почти всё рисуется посредством проца, соотв. при нормальных разрешениях (больше 800*600) нужно хотя бы Р4.
Поэтому если есть возможность — рисовать GUI через TurboVision.
Хотя надо отметить, если хорошо подойти к делу GUI в графическом режиме можно нарисовать очень достойный.
Здравствуйте, Аноним, Вы писали:
А>Это моя текущая работа (т.е. не теоретический, а практический совет). А>Компилятор DJGPP, графика рисуется посредством allegro. А>GUI можно рисовать непосредственно через allegro, но не очень удобно. А>Есть довольно удобная либа — MASking — основные виджеты GUI поверх allegro. А>Кстати, если потом будет переход под линух (а в случае серьёзной программы будете вынуждены) то всё это "безобразие" вроде как компилится под никсы (сам пока ещё не пробовал). А>Но это в случае, если нет возможности обойтись TurboVision — ибо по простоте и быстродействию с текстовым режимом соревноваться не просто.
Собрал и посмотрел allegro под linux. Посмотрел примеры... Пока вроде подходит. Попытался собрать в DOS'е при попытке сделать make останавливается на следующей ошибке:
c:\src\allegro>make
Compiling Allegro for djgpp, optimised. Please wait...
obj/djgpp/asmdef.exe obj/djgpp/asmdef.inc
writing structure offsets into obj/djgpp/asmdef.inc...
gcc -Wall -Wno-unused -I. -I./include -x assembler-with-cpp -o obj/djgpp/alleg/i
blit16.o -c src/i386/iblit16.s
c:/djgpp/tmp\ccai4cjl: Assembler messages:
c:/djgpp/tmp\ccai4cjl:354: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:419: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:421: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:437: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:437: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:445: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:445: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:451: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:451: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:496: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:498: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:516: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:520: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:565: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:567: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:587: Error: operands given don't match any known 386 instruction
c:/djgpp/tmp\ccai4cjl:587: Error:
c:\src\allegro>
Перед make делал fix.bat djgpp --crlf --nomsvcpaths. В чем дело? Как собрать в DOS'e?
Здравствуйте, Пётр Седов, Вы писали:
ПС>Здравствуйте, def0e0, Вы писали: D>>Проблема в том, что мне необходимо в одном из окон нарисовать график. Но как это сделать, если весь интерфейс рисуется в текстовом режиме символами? ПС>Может, сделать так. Основной интерфейс сделан с помощью Turbo Vision. Когда нужно показать пользователю график, программа переключается в графический режим и рисует картинку с помощью graphics.h. После того как пользователь увидел всё что хотел, он жмёт Esc и программа возвращается обратно в текстовый режим, в котором за содержимое экрана отвечает Turbo Vision.
Я бы наверно так и сделал, но мне необходимо вместе с графиками отображать и текстовые данные. Можно и текст в графическом режиме рядом расположить, но тогда смысл мне отдельно в текстовом режиме делать только меню с настройками... Как-то не удобно мне кажется...
У меня есть скриншот программы (постараюсь в ближайшее время выложить), где в текстовом режиме в отдельном нарисованном окне рисуют графики и одновременно рядом отображается текст. Вот мне бы узнать как это они сделали...
PS: На графику мне нужно тратить как можно меньше ресурсов, так как главное успеть опросить, принять и обработать данные от устройств, а потом уже отображать полученные данные. Поэтому то и хочется весь интерфейс сделать в текстовом режиме, а графики рядом в небольшом окошке...
Здравствуйте, Кодт, Вы писали:
К>Чисто теоретически, можно сделать текстовый режим поверх графического. (Даже старый добрый CGA это поддерживает). К>Но беда в том, что TurboVision работает напрямую с видеобуфером, а не с терминалом, поэтому в лоб, просто переключив видеорежим, не получится.
А если не использовать TurboVision, то как "теоретически" можно сделать текстовый режим поверх графического?
Здравствуйте, def0e0, Вы писали:
К>>Чисто теоретически, можно сделать текстовый режим поверх графического. (Даже старый добрый CGA это поддерживает). К>>Но беда в том, что TurboVision работает напрямую с видеобуфером, а не с терминалом, поэтому в лоб, просто переключив видеорежим, не получится.
D>А если не использовать TurboVision, то как "теоретически" можно сделать текстовый режим поверх графического?
Это не задача TV. Оно-то как раз очень не любит такое, потому что работает с текстовым буфером напрямую.
А теория очень простая.
Вариант номер 1: просто рисовать моноширинным шрифтом в графический буфер.
Вариант номер 2: завести текстовый буфер в основной памяти, и каждый раз, когда его содержимое меняется — смотреть вариант номер 1.
Переключать же видеорежимы — это смотри модуль Graph и драйвера cga.bgi, egavga.bgi к нему.
Здравствуйте, Аноним, Вы писали:
А>Давненько я написал библиотечку для переключения Turbo Vision в графический режим, 100% совместимую с Turbo Vision, оказалось таки довольно легко, по сути два места перекрыть:
Ух ты! То что надо! Можешь поделится библиотечкой?
Здравствуйте, lxa, Вы писали:
lxa>Попытался раскопать. К сожалению, то, что я делал для С++, потерялось. Здесь я собрал все постарше, что делал с паскалевским Turbo Vision. Тем не менее, насколько я помню, каких либо специфических проблем с C++ версией не было. Эти исходники можно рассматривать скорее как прототип не очень высокого качества , но тем не менее что-то можно найти. Чтобы убедиться в работоспособности, можно запустить grabber\myshell.exe, предварительно разрешив ему использовать XMS память, и потом открыть, например, pcx\r.pcx. Идея простая, насколько я помню нужно перекрыть функцию отображения знакоместа, пересчет координат мыши и инициализацию/деинициализацию. Знакоместо в функции отображения знакоместа фактически определяется двухбайтовым словом, в нашей функции бит мерцания определяет, показывать ли обычный символ или делать расширенный "рендеринг" фрагмента. Переопределение бита мерцания — это единственная "несовместимость" с TV. Pасширенный "рендеринг" можно реализовывать по-разному, как вариант, отображать эти знакоместа на фрагменты загруженных в память битмапок. Одна деталь исполнения: у меня не было всех исходников TV для Паскаля, и я перекрывал функцию отображения знакоместа через 55h-е прерывание, хакнув tpu файл. lxa>Вопросы are welcome
Спасибо! Да уж... Разбираться видимо буду долго с этой темой...
Здравствуйте, def0e0, Вы писали:
D>Пишу программу под DOS на С++. В программе должны быть меню, окна, строка статуса и прочие удобства (например как в TurboPascal'е ), для этого использую библиотеку Turbo Vision. Проблема в том, что мне необходимо в одном из окон нарисовать график. Но как это сделать, если весь интерфейс рисуется в текстовом режиме символами? Как в текстовом режиме работать с отдельными пикселями? Или может есть какая-то библиотека с помощью которой можно создавать пользовательский интерфейс в графическом режиме?
у Фаронова во второй книжке по Паскалю рассматривается примерно такой же вопрос. Книжка называется "Turbo Pascal 7.0 Практика программирования"
Re: текстовый+графический режим в DOS?
От:
Аноним
Дата:
29.01.08 10:58
Оценка:
Здравствуйте, def0e0, Вы писали:
D>Пишу программу под DOS на С++. В программе должны быть меню, окна, строка статуса и прочие удобства (например как в TurboPascal'е ), для этого использую библиотеку Turbo Vision. Проблема в том, что мне необходимо в одном из окон нарисовать график. Но как это сделать, если весь интерфейс рисуется в текстовом режиме символами? Как в текстовом режиме работать с отдельными пикселями? Или может есть какая-то библиотека с помощью которой можно создавать пользовательский интерфейс в графическом режиме?
По-моему, Вы отстали от жизни лет так на 15...