Решил создать программу для работы с текстовыми файлами.
Думаю, что будет как альтернативная программа к TinyPad.
Преимущество по сравнению с TinyPad в том что есть многократный Повтор/Отмена действий.
Можно работать с файлами больше 65 Кб. Скроллинга пока нет так что на большие файлы можно не надеяться. Недостатков пока намного больше, потому что многое не сделано. Версия тестовая, так что просьба с "серйозными" файлами пока не работать.
Редактор TextEdit
-
Last edited by IgorA on Sat Feb 14, 2009 2:35 pm, edited 1 time in total.
здОрово) конкуренция нужная вещь) // [offtop]Leency, а может и сделаю браузер не знаю пока.[/offtop]
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Это конечно хорошо, но хочу немного критики.. вынеси элементы в разные процедуры и например по нажатию клавиши перерисовывай не все окно а только вызывай нужную функцию и тогда перерисовку почти не будет видно)
Veliant
Например я пишу процедуру:
И оно не работает. По идее, на сколько я понимаю должно работать, или я что-то упустил ?
На форуме я подобные предложения видел, но пока перерисовать часть окна у меня почему-то не удавалось. Может я что-то еще не знаю об работе системыпо нажатию клавиши перерисовывай не все окно а только вызывай нужную функцию и тогда перерисовку почти не будет видно
Например я пишу процедуру:
Code: Select all
Red_MainWnd:
push eax ebx
mcall 12,1 ;готовлюсь к рисованию
xor eax,eax
mov ebx,10*65536+460
mov ecx,10*65536+230
mov edx,[sc.work]
or edx,0x73000000
mov edi,hed
mcall ;прорисовываю контур окна
call draw_main_win ;прорисовываю в отдельной функции измененную часть окна
mcall 12,2 ;кидаю из контекста на экран
pop ebx eax
ret ;возвращаюсь обратно в вызвавшую функцию
То, что ты выложил - это только начало, гораздо важнее при изменении какой-то области вызывать не полностью Red_MainWnd, а, например, ту самую draw_main_win, в которой не рисуется ничего лишнего, а только то, что нужно в данный момент, причем чем больше таких подфункций, тем меньшие участки можно перерисовывать. Вообще функцию Red_MainWnd стоит вызывать только при старте программы и как реакцию на системную перерисовку окна, во всех остальных случаях использовать подфункции.
Понял я в чем была проблема. Дополнительную функцию перерисовки я поставил сразу за основной, перед входом в главный цикл, потому и глючило. А я подумал что может как в Виндовсе контекст какой для рисования нужно готовить, а оказывается все проще чем я думал, сразу рисую что надо ... .
Мигать стало меньше.
Мигать стало меньше.
Только что открыл файл размером 700КБ (12000+ строк). Что я делаю не так? Или это замечание к Tinypad'у не относится?..IgorA wrote:можно работать с файлами больше 65 Кб
P.S.: Кроме undo/redo я пока что не вижу причин начинать что-то новое (легче добавить в Tinypad). Есть что-то ещё, о чём ты не говоришь?
in code we trust
Дело в том что один файл у меня есть 360Кб, при открытии которого у меня глючит ОС.
Раз дело не в размере, то я подправлю свое сообщение.
Раз дело не в размере, то я подправлю свое сообщение.
Даже на легендарном ЛОРе телепатов никому не удаётся заставить работать, они постоянно в отпуске, а здесь их вообще отродясь не было...Дело в том что один файл у меня есть 360Кб, при открытии которого у меня глючит ОС.
В последнем дистре это проявляется? Скопировать файл в файловых менеджерах удаётся (желательно попробовать все)? Как именно начинает глючить? Глючит только tinypad или kfar'овский редактор тоже?
Ушёл к умным, знающим и культурным людям.
Напиши в личку, что значит "глючит ОС", разберёмся...
in code we trust
diamond
Глюк был в том что при открытии этого файла пропадал курсор, и я не мог двигать окна без курсора. Повторить глюк у меня не получилось, но раньше он несколько раз был.
Файл копируется удачно, думаю наверно что-то было не то в системе, TinyPad тут не причем, а я подумал на него потому что при открытии файла глючило. Наверное какая-нибудь программа портила память, как результат на других программах вылазило.
Немного обновил TextEdit
1) мерцать стало меньше, но все же еще можно оптимизировать
2) добавил прокрутку по строкам (для вертикального скролинга заготовил 2 кнопки, а так по клавиатуре PageUp PageDown)
3) меняются размеры окна с текстом в зависимости от procinfo.client_box
4) убрал один глюк
Глюк был в том что при открытии этого файла пропадал курсор, и я не мог двигать окна без курсора. Повторить глюк у меня не получилось, но раньше он несколько раз был.
Файл копируется удачно, думаю наверно что-то было не то в системе, TinyPad тут не причем, а я подумал на него потому что при открытии файла глючило. Наверное какая-нибудь программа портила память, как результат на других программах вылазило.
Немного обновил TextEdit
1) мерцать стало меньше, но все же еще можно оптимизировать
2) добавил прокрутку по строкам (для вертикального скролинга заготовил 2 кнопки, а так по клавиатуре PageUp PageDown)
3) меняются размеры окна с текстом в зависимости от procinfo.client_box
4) убрал один глюк
IgorA
Весьма рекомендую обратить внимание на тему:
viewtopic.php?f=2&t=1220
То что там заявлено не шутка и если ты не будешь торопится, то немалую часть работы по коду можно будет не делать.
Разумеется это лишь в том случае, если это не очередная поделка на пару недель, а потом забили на это дело...
Весьма рекомендую обратить внимание на тему:
viewtopic.php?f=2&t=1220
То что там заявлено не шутка и если ты не будешь торопится, то немалую часть работы по коду можно будет не делать.
Разумеется это лишь в том случае, если это не очередная поделка на пару недель, а потом забили на это дело...
Mario
В том, что надо стремится все стандартизировать ты прав. Общие компоненты это хорошо.
Но дело в том что скролинги от andrew_programer я не взял по 2 причинам:
1) вертикальный и горизонтальный отличаются по оформлению, не красиво что один будет квадратный а другой скругленный
2) она (библиотека) давно не развивается и вроди не доделана до конца
А компонент EditBox я взял от Lrz. Он говорит, что хочет сделать стандартный скролинг, этого я не знал, спасибо тебе за ссылку.
В любом случае почти во всех программах, которые я видел, скролинги делались через кнопки системной функции 8 у меня пока нет другого выхода
: Открой код ZSea и может я из него возьму менюшку и для Lrz меньше работы будет (меню он тоже хочет добавить в box_lib.obj).
В том, что надо стремится все стандартизировать ты прав. Общие компоненты это хорошо.
Но дело в том что скролинги от andrew_programer я не взял по 2 причинам:
1) вертикальный и горизонтальный отличаются по оформлению, не красиво что один будет квадратный а другой скругленный
2) она (библиотека) давно не развивается и вроди не доделана до конца
А компонент EditBox я взял от Lrz. Он говорит, что хочет сделать стандартный скролинг, этого я не знал, спасибо тебе за ссылку.
В любом случае почти во всех программах, которые я видел, скролинги делались через кнопки системной функции 8 у меня пока нет другого выхода
: Открой код ZSea и может я из него возьму менюшку и для Lrz меньше работы будет (меню он тоже хочет добавить в box_lib.obj).
IgorA
Вообще то в теме обсуждалась BOX_LIB, а не LIBGUI и соответственно речь о компонентах от andrew_programer не шла.
Код zSea я открывать не буду, но вот макросы компонентов SCROLLBAR, DINAMIC BUTTON и MENU BAR будут интегрированы в BOX_LIB.
Использовать бибилотеку можно даже не имея исходников, но поскольку я не "собака на сене", то исходники данных компонентов будут выложены под лицензией аналогичной BSD.
З.Ы. Еще раз повторяю, если плохо понятно - компоненты встроенные в загружаемый модуль (по другому библиотека) можно использовать и не имея исходника - достаточно иметь документацию и/или пример использования. Это замечательно демонстрируется на KFAR_ARC.OBJ и SORT.OBJ которые есть в архиве zSea и к исходникам которых я не притрагивался (да исходники есть, но раз соблюден принцип "черного ящика" то я с таким же успехом мог бы использовать их не имея исходников).
Вообще то в теме обсуждалась BOX_LIB, а не LIBGUI и соответственно речь о компонентах от andrew_programer не шла.
Код zSea я открывать не буду, но вот макросы компонентов SCROLLBAR, DINAMIC BUTTON и MENU BAR будут интегрированы в BOX_LIB.
Использовать бибилотеку можно даже не имея исходников, но поскольку я не "собака на сене", то исходники данных компонентов будут выложены под лицензией аналогичной BSD.
Вообще то открою страшную тайну - речь шла о моих компонентах, поскольку написание аналогичных компонентов в приемлмые сроки для <Lrz> не реально (у него сейчас совсем другие жизненные трудности).и для Lrz меньше работы будет
З.Ы. Еще раз повторяю, если плохо понятно - компоненты встроенные в загружаемый модуль (по другому библиотека) можно использовать и не имея исходника - достаточно иметь документацию и/или пример использования. Это замечательно демонстрируется на KFAR_ARC.OBJ и SORT.OBJ которые есть в архиве zSea и к исходникам которых я не притрагивался (да исходники есть, но раз соблюден принцип "черного ящика" то я с таким же успехом мог бы использовать их не имея исходников).
Сделал несколько доработок (версия 18.02.2009):
1) память под файл bmp выделяю через функции, в связи с чем размер программы уменьшился на 19 Кб
но теперь в KlbrInWin вместо кнопок черные квадраты
2) ввел режим замены символа (вкл. кнопкой Ins)
3) уменьшил мерцание (при движении курсора Вверх/Вниз внутри окна), Влево и Вправо - пока мигает
4) вертик. скролинг немного доработал, но скорее всего буду менять его на библиотечный, нижний пока не развиваю, жду готовых примеров использования библиотеки
---
Добавил файл readme, в котором можно еще кое что прочитать, особенно рекомендую прочитать раздел в нем: *** Некоторые недоработки ***
---
Файл ниже, а серое уже исправил ...
1) память под файл bmp выделяю через функции, в связи с чем размер программы уменьшился на 19 Кб
но теперь в KlbrInWin вместо кнопок черные квадраты
2) ввел режим замены символа (вкл. кнопкой Ins)
3) уменьшил мерцание (при движении курсора Вверх/Вниз внутри окна), Влево и Вправо - пока мигает
4) вертик. скролинг немного доработал, но скорее всего буду менять его на библиотечный, нижний пока не развиваю, жду готовых примеров использования библиотеки
---
Добавил файл readme, в котором можно еще кое что прочитать, особенно рекомендую прочитать раздел в нем: *** Некоторые недоработки ***
---
Файл ниже, а серое уже исправил ...
Last edited by IgorA on Wed Feb 18, 2009 11:32 pm, edited 1 time in total.
Who is online
Users browsing this forum: No registered users and 6 guests