| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Проблема с ShowWindow() |
| Автор: AlexanderV 15.10.2005, 18:04 |
| Я создаю окно в центре экрана, все делаю как полагается. На этом окне у меня должен быть изображен bitmap. Код, который помещает его на форму, находится в событии WM_PAINT. А изначально фон окна - черный. Когда я вызываю функцию ShowWindow(hwnd,SW_SHOW), то сначала показывается окно, а потом вызывается событие WM_PAINT. В результате возникает неприятный эффект мигания. Как сделать так, чтоб окно не показывалоть до тех пор, пока не будет перерисовано? |
| Автор: Mad 15.10.2005, 18:08 | ||
Этого делать не надо, просто тебе надо отловить WM_SHOWWINDOW, и в нем (дополнительно к WM_PAINT) сделать перерисовку |
| Автор: devmstr 15.10.2005, 20:25 |
| Может сразу после Show сделать UpdateWindow? Хотя Вы наверное так и делаете... Вообще странно, что мигает. |
| Автор: Mad 16.10.2005, 12:27 | ||
AlexanderV чуток ошибся мегание от того, что у тебя сначала DefWindowProc ловит WM_ERASEBKGND и в нем заполняет все окно черным, и только потом твой WM_PAIN обработчик рисует картинку. Что избавиться от мигания, перениси отрисовку из WM_PAIN в WM_ERASEBKGND |
| Автор: AlexanderV 16.10.2005, 18:46 | ||
Да, помогло. Теперь все клас Кстати, а какой функцией меняется фон окна? |
| Автор: Mad 16.10.2005, 18:51 | ||
Это не функцией меняеться. Кисть которой будет заполняться фон окна задветься при регистрации класса окна |