|
0 / 0 / 1
Регистрация: 16.03.2015
Сообщений: 46
|
|
MFC: CEdit мерцает при обновлении (SetDlgItemTextW)07.03.2017, 02:40. Показов 1655. Ответов 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 при движении Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|