-
> если заниматься выделением текста во всех трех компонентах, > и передавать/отнимать фокус у всего окна, вылезут какие- > то эффекты ?
У меня эффекты лезут самы разнообразные и закономерности я в них не вижу.
При выделении в верхнем поле иногда пропадает часть текста, затем при потере фокуса текст восстанавливается, при возврате фокуса окну иногда совсем пропадает иногда остается как есть, но выделение пропадает.
При выделении в поле Memo пропадают все строки, кроме той, в которой происходит выделение, при потере фокуса остается только эта строка, при последующем получении тоже только она и выделение сохраняется. Причем больше двух строк выделить не получается.
-
{RASkov} © (01.05.08 23:45) [58]
Спасибо. Про Memo я знаю - там даже в тексте самого Memo это написано. То, что сильно моргает, это при обработке KEYDOWN делается Invalidate, иначе текст будет пропадать при вводе с клавиатуры. Собственно, моргает и в компонентах по ссылке от guav. По той же самой причине.
Так что пока единственно верным путем является все-таки собственная отрисовка текста и фона. Тогда можно и прозрачность сделать и заливку какую угодно.
Но это долго писать.
-
Вот и я добился интересного эффекта - при включении XPMan в проект и включенных темах, при запуске все появляется, как и раньше, но при перемещении мыши над однострочным EDIT-ом, текст в окне пропадает. Целиком. Если XPMan убрать из проекта или отключить темы (задать тему "Классическую"), то все рисуется нормально (кроме выделения текста мышью в Memo, разумеется).
Так что приходим к [61]
-
Удалено модератором Примечание: Не в пивной...
-
тиипа_того, твое сообщение очень информативно и очень помогло. спасибо. и где в mail.ru агенте градиентное окошко ввода текста, там его нет - насколько вижу?
-
Эффект, получающийся у проверяющих, я воспроизвел. Сдается мне, что у меня на домашнем компьютере все хорошо и красиво, потому что установлена поддержка непростых языков, китайского, арабского и проч. В результате чего весь вывод текста выполняется в USP10.DLL (и все показывается, как надо). В системе, где поддержка таких языков не установлена, вывод текста в Edit выполняется в USER32.DLL (без тем) или в COMCTL32.DLL, причем, сначала выводится текст, а потом посылается сообщение WM_CTLCOLOREDIT (или WM_CTLCOLORSTATIC для Readonly или Disabled контрола), в котором весь текст вытирается градиентом. Порядок рисования примерно такой: Посылается WM_CTLCOLOREDIT Устанавливается цвет текста и цвет фона в DC, выводится текст, Посылается WM_CTLCOLOREDIT выводится текст (уже без установленных атрибутов)
|