Редактор TextEdit

...
  • здОрово) конкуренция нужная вещь) // [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 стоит вызывать только при старте программы и как реакцию на системную перерисовку окна, во всех остальных случаях использовать подфункции.
  • Понял я в чем была проблема. Дополнительную функцию перерисовки я поставил сразу за основной, перед входом в главный цикл, потому и глючило. А я подумал что может как в Виндовсе контекст какой для рисования нужно готовить, а оказывается все проще чем я думал, сразу рисую что надо ... :D .

    Мигать стало меньше.
  • IgorA wrote:можно работать с файлами больше 65 Кб
    Только что открыл файл размером 700КБ (12000+ строк). Что я делаю не так? Или это замечание к Tinypad'у не относится?..

    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) убрал один глюк
  • IgorA
    Весьма рекомендую обратить внимание на тему:
    viewtopic.php?f=2&t=1220
    То что там заявлено не шутка и если ты не будешь торопится, то немалую часть работы по коду можно будет не делать.
    Разумеется это лишь в том случае, если это не очередная поделка на пару недель, а потом забили на это дело...
  • Mario
    В том, что надо стремится все стандартизировать ты прав. Общие компоненты это хорошо.
    Но дело в том что скролинги от andrew_programer я не взял по 2 причинам:
    1) вертикальный и горизонтальный отличаются по оформлению, не красиво что один будет квадратный а другой скругленный
    2) она (библиотека) давно не развивается и вроди не доделана до конца
    А компонент EditBox я взял от Lrz. Он говорит, что хочет сделать стандартный скролинг, этого я не знал, спасибо тебе за ссылку.
    В любом случае почти во всех программах, которые я видел, скролинги делались через кнопки системной функции 8 у меня пока нет другого выхода :?

    : Открой код ZSea и может я из него возьму менюшку :wink: и для Lrz меньше работы будет (меню он тоже хочет добавить в box_lib.obj).
  • IgorA
    Вообще то в теме обсуждалась 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, в котором можно еще кое что прочитать, особенно рекомендую прочитать раздел в нем: *** Некоторые недоработки ***
    ---
    Файл ниже, а серое уже исправил ...
    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 4 guests