|
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
|
|
MFC: CEdit мерцает при обновлении (SetDlgItemTextW)07.03.2017, 02:40. Показов 1713. Ответов 10
Метки нет (Все метки)
Моя программка парсит ввод юзера в Edit Control, редактирует (например дописывает что-то или убирает),
и возвращает получившееся обратно через SetDlgItemTextW. Это делается по таймеру 50-100 мс, лучше даже быстрее. Так вот, текст мерцает. Для эксперимента можно просто выводить тупо один и тот же текст по таймеру, будет тот же эффект. Если заменять не весь текст, а выделять что нужно (SetSel) и заменять выделенное (ReplaceSel), получается тоже плохо, только немного по-другому. Как правильно делать-то?
0
|
|
| 07.03.2017, 02:40 | |
|
Ответы с готовыми решениями:
10
MFC CEdit & unicode
Ошибка при получении текста из CEdit |
| 11.03.2017, 10:49 | |
|
Если тебе нужен ввод пользователя (реакция на ввод), то "парсить" его таймером не нужно. Используй уведомление EN_CHANGE.
В Мастере классов выбери твой диалог, во вкладке "Команды" выбери идентификатор твоего элемента управления edit-control, в списке "Сообщения" выбери EN_CHANGE, жми "Добавить обработчик" и "ОК". В созданной ф-ции получи ввод пользователя и делай с ним что хош.
1
|
|
|
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
|
|
| 11.03.2017, 19:43 [ТС] | |
|
Это мне не поможет, так как инфа в Edit вводится не только юзером, но и поступает извне, и очень быстро.
Так что либо по таймеру, либо собсно по событию прихода инфы, что всё равно. Попробовал заменить CEdit на List Control в стиле Report, и пока просто выводить в него приходящую инфу (без редактирования юзером). Надежда была на что? На то что поскоку можно менять не всё сразу, а отдельные клетки (SetItemText), то мерцания не будет. Но оно есть. Если менять одну клетку, то она и мерцает (правда едва заметно), если менять все - то весь список отчётливо мерцает. Пробовал делать SetItemText в OnPaint, а по таймеру только InvalidateRect, но ничего не изменилось. Так как же правильно менять содержимое любого контрола (часто!) без этих спецэффектов?
0
|
|
| 11.03.2017, 20:36 | ||||||
|
Тогда тебе нужно взяться за отрисовку твоих данных. Стандартно, список, или текстовый редактор перерисовывается полностью (обновляется вся рабочая область окна)
Используй другой элемент управления с возможностью самостоятельной перерисовки - с ф-цией DrawItem.
0
|
||||||
|
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
|
|
| 12.03.2017, 10:18 | |
|
Интересно, что юзер может вводить в поле ввода со скоростью 50мс? Или что там извне такое поступает, что пользователь редактирует? Полюбому от таймера надо избавляться.
0
|
|
|
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
|
|||||||||
| 12.03.2017, 12:00 | |||||||||
|
Добавлено через 38 минут Кликните здесь для просмотра всего текста
0
|
|||||||||
|
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
|
|
| 12.03.2017, 13:03 | |
|
Alex5, так не честно, у тебя же содержимое не меняется. Может где-то в недрах WinAPI это дело оптимизируется и отрисовка просто не происходит.
0
|
|
|
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
|
||||||||
| 12.03.2017, 13:51 | ||||||||
|
А эффект будет в такой ситуации.
1
|
||||||||
|
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
|
||
| 12.03.2017, 17:16 [ТС] | ||
|
Вот сделал голый пример. Смотрите внимательно. Мерцает "приступами", то померцает, то успокоится на время. Также попробуйте поредактировать что-нибудь в окне. Винда 10 (14393.693), есличö.
0
|
||
|
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
|
|
| 12.03.2017, 17:33 [ТС] | |
|
А ещё попробуйте добавить пустых строк (Enter) и тогда прокрутить вниз.
0
|
|
|
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
|
||
| 12.03.2017, 22:20 | ||
|
Да, если 40 строк, то заметно. Причем это связано именно с объемом текста и заметно для таймера 500мс или 1 сек.
0
|
||
| 12.03.2017, 22:20 | |
|
Помогаю со студенческими работами здесь
11
Ошибка в OnSize при изменении размера компоненты CEdit Мерцает изображение при перерисовке При движении объект мерцает При наведении блок мерцает Мерцает PictureBox при движении Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|