Проблемы с моноширинными шрифтами

Тема в разделе "WASM.BEGINNERS", создана пользователем Dlr, 27 июл 2007.

  1. Dlr

    Dlr New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    9
    Привет всем.
    Вот такая проблема возникла:
    Есть эдитбокс, для которого можно устанавливать различные моноширинные шрифты. Я ввожу в него текст... Все нормально, но стоит мне только установить для этого эдитбокса жирный или курсивный моноширинный шрифт и начать вбивать кириллицу, сразу все плывет и как-то криво выводится (наблюдал это в WinXP, в Win95 - все нормально). Почему так?

    Заранее благодарен за ответ.
     
  2. FloodFill

    FloodFill New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2007
    Сообщения:
    1
    Внимание, вопрос. Что в чёрном ящике?
     
  3. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    сталкивался с такой же проблемой, но она воспроизводилась только для многострочных эдитов, причём не зависела от шрифта и раскладки.
    решением тогда была принудительная перерисовка окна
     
  4. Dlr

    Dlr New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    9
    Спасибо за рекомендацию. У меня тоже мультилайновый эдит, и когда наблюдаются выше описанные глюки, он засоряется всяким мусором, который исчезает при перерисовке окна, однако наблюдается и такое: при вводе текста, с каждым символом курсор все сильнее отдаляется от строки, он как бы опережает ее, из-за этого место вывода новых символов перестает совпадать с положением курсора. А принудительная перерисовка не устраняет этот эффект.

    Шрифт устанавливаю следующим образом:

    Код (Text):
    1. invoke CreateFont,16,NULL,NULL,NULL,700,FALSE,FALSE,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,SADD("Fixedsys")
    2. mov hFont,eax
    3. invoke SendMessage,hEdit,WM_SETFONT,eax,TRUE
    Высота и ширина символов значения не имеют.

    При этом глюки наблюдаются только если шрифт фиксированной ширины && жирный или курсивный && печатаю кириллицей. Во всех остальных случаях проблем нет.

    Эдит имеет стили: ES_MULTILINE, ES_AUTOVSCROLL, ES_AUTOHSCROLL, ES_WANTRETURN, WS_HSCROLL, WS_VSCROLL, WS_CHILD, WS_VISIBLE, WS_EX_CLIENTEDGE.