![]() |
|
|
![]()
|
|
| dauster |
|
||||
|
Unregistered |
Суть проблемы в следующем - есть прога (С++/MFC), одной из функций которой является демонстрация изображений (последних может быть много). Когда какая-либо картинка не помещается в область рисования, появляются скроллбары (вертикальный и/или горизонтальный в зависимости от потребностей) для осуществления функции прокрутки. Делается это примерно так:
Вот. Вся эта фигня, в принципе, работает. Т.е. картинки листаются, скроллбары создаются и исчеают в зависимости от потребности. Но до поры до времени, а именно до того момента, пока программа не потеряет фокус. После этого (когда фокус, ессно, уже снова восстановлен) она перестает ловить WM_MOUSEWHEEL вообще. Т.е. картинки больше меняться не хотят. Правда остальные события мыши ловит - проверено. И еще, если убрать скроллбары, то потеря фокуса и его повторное приобретение никак не сказываются на процессе листания картинок (событие WM_MOUSEWHEEL не пропадает неизвестно где), так что, я думаю, что где-то напортачил со CScrollBar. P.S. кроме сказанного могу добавить, что иногда скроллбары создаются с мигающим слайдербоксом (надеюсь, правильно вспомнил |
||||
|
|||||
| alien_by |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 29.11.2004 Где: Belarus/Gomel Репутация: 5 Всего: 8 |
1. По поводу пропадания реакции на скроллинг!!! Всё зависит от того, как ты отображаешь каритинку на своём диалоге, если просто рисуешь с помощью контекста диалога, то честно тебе скажу очень странно (возможен глюк в библиотеке, да...да... и Microsoft не без грехов
2. По поводу мигающих слайдербоксов, при каждой загрузке изображения, ты снова и снова пересоздаёшь скролбары, это не лучший способ, т.к. при этом происходит их перерисовка, из-за этого может возникать ощещение мигания. Вместо пересоздания, могу посоветовать, создать скролбары один раз и перенастраивать их параметры в соответствии с вновь загруженной картинкой или делать невидимыми, если они не нужны. |
|||
|
||||
| dauster |
|
|||
|
Unregistered |
alien_by
спасибо, помогло По-пунктам могу сказать, что: 1) я не использую Picture Control - рамку и само изображение рисую просто в самом диалоге. 2) действительно, я что-то сглупил - при одноразовом создании скроллбаров и их последующей модификации посредством MoveWindow(...) - все глюки исчезли. Интересно, а почему глюки все-таки были?... |
|||
|
||||
| alien_by |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 29.11.2004 Где: Belarus/Gomel Репутация: 5 Всего: 8 |
И Microsoft не без греха...
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |