Форматирование в RichEdit

Discussion in 'WASM.WIN32' started by S_Alex, Jun 22, 2008.

  1. S_Alex

    S_Alex Alex

    Blog Posts:
    0
    Joined:
    Aug 27, 2004
    Messages:
    561
    Location:
    Ukraine
    Доброго всем времени суток.
    Есть одна проблемка.
    При изменении формата текста в RichEdit наблюдаю такие странности.
    Code (Text):
    1. invoke  SendMessage,[hREdit],EM_SETCHARFORMAT,SCF_ALL, addr cfm
    Если в контроле была надпись до изменения формата то не изменяется ШРИФТ,
    размер меняется и подчеркивание с зачеркиванием, прямой или наклонный тоже.
    При копировании и вставке тоже самое.
    Работает только если текст в контрол попал путем набора на клаве, вот тогда всё ОК.
    Всё работает. Какой-угодно шрифт и размер и т.д. и т.п.
    Что это за беда такая.
     
  2. driver

    driver New Member

    Blog Posts:
    0
    Joined:
    Jun 18, 2008
    Messages:
    302
    mov cfm.cbSize, sizeof cfm

    mov cfm.dwMask,CFM_SIZE ; <

    mov cfm.yHeight,(размер шрифта в л.е.)

    invoke SendMessage,[hREdit],EM_SETCHARFORMAT,SCF_ALL, addr cfm

    должно работать
     
  3. S_Alex

    S_Alex Alex

    Blog Posts:
    0
    Joined:
    Aug 27, 2004
    Messages:
    561
    Location:
    Ukraine
    С размерами всё хорошо.
    Вот с начертанием проблема.
    Ну вот например.
    Если в контрол вставить текст вот так:
    Code (Text):
    1. invoke  SetWindowText,[hREdit],ADDR BuffText
    То символы которые отображаються меняют только размер, курсив и жирность, а сам шрифт оснается неизменным.

    Но если в контрол добавить пару букв так:
    Code (Text):
    1. invoke  SendMessage,[hREdit],WM_CHAR,'A',NULL
    то всё хорошо, всё работает. Но текст который был введен первым способом уверенно не хочет менять свое очертание.
    В чем тут дело я не могу понять.
     
  4. driver

    driver New Member

    Blog Posts:
    0
    Joined:
    Jun 18, 2008
    Messages:
    302
    Что такое [hREdit]? Это то же самое что и hREdit в масме? тогда нафига?

    После WM_CHAR может обновить окно? а потом уже делать что-то

    Всё должно работать, потому-что работает, проверено. ... Редактор делает только то, что ты просишь его сделать. Неправильно просишь, разберись с масками и флагами.
     
  5. S_Alex

    S_Alex Alex

    Blog Posts:
    0
    Joined:
    Aug 27, 2004
    Messages:
    561
    Location:
    Ukraine
    driver
    Спасибо. У меня всё заработало. А может и работало всё сразу.
    Просто я заметил, что не все шрифты можно задавать RichEdit. Одни нормально "кушает", а другие нет.
    Вот эти точно не хочет:
    Архив битый. Уменя не откывается.
     
  6. driver

    driver New Member

    Blog Posts:
    0
    Joined:
    Jun 18, 2008
    Messages:
    302
    не балуйся со шрифтами, это может плохо кончиться, слишком там всё заморочено...

    обнаружил прикольную фишку - если шрифт в редакторе системный, даже простой едит работает шустро.

    Стоит только сделать критфонтиндирект со своими параметрами, едит начинает ощутимо тормозить на больших файлах - при обычном мэппинге он отрисовавает весь текст как-бы , ричедит еще более менее
     
  7. S_Alex

    S_Alex Alex

    Blog Posts:
    0
    Joined:
    Aug 27, 2004
    Messages:
    561
    Location:
    Ukraine
    driver
    Спасибо за инфу.
    Мне не нужно гору текста. Так только пару десятков, ну макс. FFh-20h символов.
    Хочу получать растровые шрифты для исспользования в своих проектах.
     
  8. KondraT

    KondraT Member

    Blog Posts:
    0
    Joined:
    Jan 22, 2006
    Messages:
    175
    Чтобы не создавать новую тему про RichEdit позвольте спросить тут:

    Возможно ли вставлять рисунки в RichEdit и каким образом это делать?
     
  9. driver

    driver New Member

    Blog Posts:
    0
    Joined:
    Jun 18, 2008
    Messages:
    302
    http://www.codeguru.com/cpp/controls/richedit/

    здесь вроде есть

    не уверен, что это сделать просто, а тем более - перевести на асм. Когда програмисты мелкософта ... програмировали, то не ставили целью сделать систему понятной и доступной начинающим русскоязычным програмистам