Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ListView мерцает при заполнении записями / 7 сообщений из 7, страница 1 из 1
13.01.2006, 18:44:34
    #33482370
Pantalone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView мерцает при заполнении записями
Это происходит если при добавлении выполнять DoEvents
Как бы это безобразие прекратить?
...
Рейтинг: 0 / 0
16.01.2006, 01:27:48
    #33483944
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView мерцает при заполнении записями
попробуй так.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Declare Function LockWindowUpdate Lib "user32.dll" (ByVal hwndLock As Long) As Long

  'заморозка
  If LockWindowUpdate(Me.hWnd) =  0  Then
    LockWindowUpdate  0 &
    LockWindowUpdate Me.hWnd
  End If

... твой код

   ' разморозка
   LockWindowUpdate  0 &

дуивентом прогрессбар обновляешь самописный?
лучше поискать другой вариант обновления окна.
посмотри что-нибудь типа:
Private Declare Function UpdateWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
...
Рейтинг: 0 / 0
16.01.2006, 02:27:01
    #33483952
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView мерцает при заполнении записями
кстати, проверил
LockWindowUpdate ListView1.hWnd
...
LockWindowUpdate 0&

тоже работает.
...
Рейтинг: 0 / 0
16.01.2006, 11:10:46
    #33484357
Pantalone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView мерцает при заполнении записями
Виктоша, спасибо, но мне нужно чтобы юзер мог на кнопку отмены нажать, за заголовок окно тащить, без DoEvents это не получится.
Ты этот пример без DoEvents наверное имеешь в виду, а с ним все опять замерцает.
...
Рейтинг: 0 / 0
16.01.2006, 11:48:25
    #33484451
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView мерцает при заполнении записями
PantaloneВиктоша, спасибо, но мне нужно чтобы юзер мог на кнопку отмены нажать, за заголовок окно тащить, без DoEvents это не получится.
Ты этот пример без DoEvents наверное имеешь в виду, а с ним все опять замерцает.
не "этот".
незамороженное окно, на котором проходили изменения содержания обязательно будет моргать при выполнении DoEvents.

замороженное окно формы мерцать не будет. у меня не мерцает и по последнему варианту LockWindowUpdate ListView1.hWnd

попробуй.

что до DoEvents - дело даже не столько в его катастрофической тормознутости, сколько в способе "обеспечении доступности" твоего собственного приложения. в том самом нажатии кнопок.
если ты сознательно используешь дуивенс именно для этой цели, то необходимо приложение специальных усилий для предотвращения побочных последствий.
фактически тогда ты обязан ввести дополнительные правила кодирования своих форм. Типа - ввсести состояния "рассчитываю то или сё".
иначе иногда пользователь будет сильно удивляться, а ты не понимать, что он тебе рассказывает.
Применительно к отмене расчета и даже протаскиванию окна формы можно
(думаю, и весьма желательно именно для предотвращения побочных последствий повторного входа в процедуры обработки событий или их пропуска) обойтись без дуивентс настолько, насколько это вообще возможно.

смотри в тырнете примеры на использование
GetInputState и рядом на функции работы с очередями сообщений.

простейший вариант
If GetInputState() Then DoEvents

но он для ускорения по сравнению с "голым" DoEvents.

обработав самостоятельно накопившуюся очередь сообщений можно обойтись совсем без DoEvents.

Правда из всего этого не следует, что исключение DoEvents гарантирует уход от ясного создания модели состояний твоей формы.
...
Рейтинг: 0 / 0
16.01.2006, 12:14:56
    #33484534
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView мерцает при заполнении записями
уточнение:
я работаю исключительно с "классическим" рабочим столом.
Без всяких XP стилей. Что будет, если разрешить применение стилей - не проверял.
Надеюсь, тоже не будет мерцать.
...
Рейтинг: 0 / 0
16.01.2006, 12:21:28
    #33484548
Pantalone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView мерцает при заполнении записями
Спасибо!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ListView мерцает при заполнении записями / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]