Здравствуйте, Imbecile, Вы писали:
I>Как сделать так, чтобы при изменении размера окна (за уголок или за край), I>клиентская область не мигала,
I>скорее всего надо убирать стили CS_HREDRAW и CS_VREDRAW, пробовал — не хочет работать, I>подскажите где и как их убирать или другой код для этих целей,
I>также буду несказанно рад статьям, советам и тд.
Здравствуйте, Imbecile, Вы писали:
I>Как сделать так, чтобы при изменении размера окна (за уголок или за край), I>клиентская область не мигала,
I>скорее всего надо убирать стили CS_HREDRAW и CS_VREDRAW, пробовал — не хочет работать, I>подскажите где и как их убирать или другой код для этих целей,
I>также буду несказанно рад статьям, советам и тд.
Присоединяюсь к вопросу. Собственно как?
Предположим у меня CListCtrl, растянутый на весь экран. При изменеии размера окна, CListCtrl начинает подмигивать. С другой стороны, если менять размер окна explorer'а, то окно FolderView (класс SysListView32) совсем не мигает. Как такого добиться?
FH>Присоединяюсь к вопросу. Собственно как? FH>Предположим у меня CListCtrl, растянутый на весь экран. При изменеии размера окна, CListCtrl начинает подмигивать. С другой стороны, если менять размер окна explorer'а, то окно FolderView (класс SysListView32) совсем не мигает. Как такого добиться?
Если присоединяешся к вопросам, то почему бы не присоединиться к ответам и не почитать их?
Re[3]: Убрать мигания при resize
От:
Аноним
Дата:
14.05.05 17:21
Оценка:
Здравствуйте, WinterMute, Вы писали:
FH>>Присоединяюсь к вопросу. Собственно как? FH>>Предположим у меня CListCtrl, растянутый на весь экран. При изменеии размера окна, CListCtrl начинает подмигивать. С другой стороны, если менять размер окна explorer'а, то окно FolderView (класс SysListView32) совсем не мигает. Как такого добиться?
WM>Если присоединяешся к вопросам, то почему бы не присоединиться к ответам и не почитать их?
Согласен присоединиться к чему угодно, если это прольёт свет на вышеназванную проблему.
Рассмотрим ответы:
1) BackBuffer + WM_ERASEBKGND — приблизительно такое решение мне и самому в голову приходило, но мне оно показалось слишком сложным. Неужто нет ничего попроще? Я был лучшего мнения о MFC.
2) WS_CLIPCHILDREN — хорошая штука, но она до конца мерцания не устраняет. Особенно это заметно, когда при изменении размера окна меняется размер CListCtrl.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, WinterMute, Вы писали:
FH>>>Присоединяюсь к вопросу. Собственно как? FH>>>Предположим у меня CListCtrl, растянутый на весь экран. При изменеии размера окна, CListCtrl начинает подмигивать. С другой стороны, если менять размер окна explorer'а, то окно FolderView (класс SysListView32) совсем не мигает. Как такого добиться?
WM>>Если присоединяешся к вопросам, то почему бы не присоединиться к ответам и не почитать их?
А>Согласен присоединиться к чему угодно, если это прольёт свет на вышеназванную проблему.
А>Рассмотрим ответы: А>1) BackBuffer + WM_ERASEBKGND — приблизительно такое решение мне и самому в голову приходило, но мне оно показалось слишком сложным. Неужто нет ничего попроще? Я был лучшего мнения о MFC.
Ты был неправильного мнения о MFC . Никаких чудес MFC не делает, только автоматизирует некоторые рутинные операции по обработке сообщений. Эта проблема проистикает из особенностей архитектуры WinApi, так что, так просто, установкой абстрактного стиля WS_DO_NOT_MIGAT проблему не решить. Но можешь поискать на CodeProject или где нибудь ещё, классы которые автоматизируют "антимигание", для WTL я такое точно видел, для MFC, по идее, тоже должны быть.
Re[5]: Убрать мигания при resize
От:
Аноним
Дата:
16.05.05 15:05
Оценка:
Здравствуйте, WinterMute, Вы писали:
WM>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, WinterMute, Вы писали:
FH>>>>Присоединяюсь к вопросу. Собственно как? FH>>>>Предположим у меня CListCtrl, растянутый на весь экран. При изменеии размера окна, CListCtrl начинает подмигивать. С другой стороны, если менять размер окна explorer'а, то окно FolderView (класс SysListView32) совсем не мигает. Как такого добиться?
WM>>>Если присоединяешся к вопросам, то почему бы не присоединиться к ответам и не почитать их?
А>>Согласен присоединиться к чему угодно, если это прольёт свет на вышеназванную проблему.
А>>Рассмотрим ответы: А>>1) BackBuffer + WM_ERASEBKGND — приблизительно такое решение мне и самому в голову приходило, но мне оно показалось слишком сложным. Неужто нет ничего попроще? Я был лучшего мнения о MFC.
WM>Ты был неправильного мнения о MFC . Никаких чудес MFC не делает, только автоматизирует некоторые рутинные операции по обработке сообщений. Эта проблема проистикает из особенностей архитектуры WinApi, так что, так просто, установкой абстрактного стиля WS_DO_NOT_MIGAT проблему не решить. Но можешь поискать на CodeProject или где нибудь ещё, классы которые автоматизируют "антимигание", для WTL я такое точно видел, для MFC, по идее, тоже должны быть.
Спасибо большое за разъяснения, WinterMute. Приятно, когда кто-то расставляет все точки над i.
У меня есть ещё один вопрос, на который хотелось бы услышать мнение знающего человека. В explorer'е CListCtrl работает замечательно. Как Microsoft этого добилась? У меня на этот счёт есть две версии. Либо они как-то по-умному переписали DefWindowProc, скажем, с использованием BackBuffer + WM_ERASEBKGND, либо они используют какую-то продвинутую версию CListCtrl. Поделитесь, пожалуйста, со мной своими соображениями.
А>У меня есть ещё один вопрос, на который хотелось бы услышать мнение знающего человека. В explorer'е CListCtrl работает замечательно. Как Microsoft этого добилась? У меня на этот счёт есть две версии. Либо они как-то по-умному переписали DefWindowProc, скажем, с использованием BackBuffer + WM_ERASEBKGND, либо они используют какую-то продвинутую версию CListCtrl. Поделитесь, пожалуйста, со мной своими соображениями.
В проводнике используется стандартный ListView, но он засабклассен. Скорее всего, стандартной процедуре отрисовки они подсовывают MedoryDC, и после отрисовки в память быстро отрисовывают результат на экран.