| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > StretchBlt меняем флаги... |
| Автор: ASMatic 22.8.2009, 22:32 |
| Суть такова: решил динамичски менять способ копирования с одного HDC в другой....Но почему то получается что окну по барабану что я меняю последний параметр для StretchBlt и посылаю окну WM_PAINT... case WM_PAINT: { ...getDC etc) StretchBlt( hMainDC, 0, 0, MainWndWidth, MainWndHeight, hSrcDC, 0, 0, 1024, 768, PaintMode ); break; OnTimer( void ) { PaintMode = SRCAND; SendMessage( hLockWnd, WM_PAINT, 0, 0 ); } После срабатывания таймера - окно получает ,обрабатывает но ничего на выводе не меняется. Почему так, что я не правильно сделал?? Добавлено через 10 минут и 55 секунд да к стати я вот пробовал перед StretchBlt сделать еще BitBlt( ...hBackDC...) ну сто бы зарисовать фон чем небудь - тоже не перерисовывает.....Эти BitBlt и StretchBlt - как вообще копирую - полностью? Например - на одном DC нету картинки - только кисть и на другом такая же ситуация - они перерисуютс?? Или для тех БЛТ-шок надо именно битмапы?? |
| Автор: ASMatic 23.8.2009, 01:07 |
| Ну как бы уже есть прогресс, но все равно не работает как надо...теперь уже PatBlt, им я решил затирать перед выводом новой картинки, но не хочет он правильно работать.... Как я понял его задание брашом выбраного контекста зарисовать его прямоугольник...Но браш у меня синий, а рисует белым Вот просьба - подскажите пожалуйста Как правильно менять картинку на HDC, но таким образом что бы перед тем HDC очищалось от предыдущей картинки,например закрасить черным.... Зарание благодарен.... |
| Автор: ASMatic 23.8.2009, 04:44 |
| http://forum.sources.ru/index.php?showtopic=38432 вроде нашел, завтра(сегодня)) посмотрю - всем спасибо за внимание.) Приятного вам воскресенья! |
| Автор: ASMatic 23.8.2009, 23:28 | ||
| я видать ошибся - НИЧЕГО НЕ ПОЛУЧАЕТСЯ!!!! ХЕЛП!!!! на данный момент получается что раз копирует DC а второй возвращает 0 - ошибка((( как правильно?? ПАМАГИТЕ!!! мой галава уже не способна сама понять где она - сабака та зарыта
Зарисовывает зелёным, чё так не понимаю - зачем тогда указывать цвет закраски, если закрашиваем брашем....Потом все как нужно копирует и получается картинка на главном DC. Таймером меняю PaintMode и вот тебе - ExtFloodFill возвращает ошибку. Вычитал что: "Only memory device contexts and devices that support raster-display operations support the ExtFloodFill function" как понял - исключительно с CreateCompatibleDC(hMainDC), решил сделать третий - промежуточный DC все работает без ошибок, но ничего не меняется - как был синим так и остался...(синий потому что в классе указал синий браш) Помогите , пожайлуста - не могу я сам справится уже.... |
| Автор: Earnest 24.8.2009, 07:17 |
| В коде рисования я не разбиралась, но посылать WM_PAINT через SendMessage - нонсенс. Ничего не произойдет (т.к. нет невалидных областей). Нужно делать Invalidate, тогда WM_PAINT придет в свое время. |
| Автор: ASMatic 24.8.2009, 13:02 |
| скажу что сообщение приходит и один раз норм срабатывает, может действительно из-за того что нельзя WM_PAINT посылать внаглую... Сделал инвалидейт и все гуд!! Спасибо!!! Долго я бы еще мучался |