Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.107.236] |
|
Сообщ.
#1
,
|
|
|
мужики, можно как-нибудь скопировать и потом нарисовать кусочек окна. прямоугольник
я имею в виду. а то двигаю предмет в окне, а окно не хочет перересовывать то, место, где раньше был предмет, пока я не закончу передвижение, те за предметом пока он движется тянется шлейф такой... если же посылать сообщение перерисовки всего окна, то начинаются глюки через какое-то время. вот кусочек кода, как я предмет двигаю. <br>RECT rect;<br><br>do<br>{<br>rect.left = intX;<br>rect.top = intY;<br>rect.right = intX + intWidth;<br>rect.bottom = intY + GetTotalHeight() + MOVE_DY;<br>InvalidateRect(hwnd,&rect,TRUE);<br>//SendMessage(hwnd,WM_PAINT,0,0);<br><br>Move(0,-MOVE_DY);<br><br>SleepEx((DWORD)MOVE_DELAY,TRUE);<br><br>HDC hdc = GetDC(hwnd);<br>Draw(hdc);<br>ReleaseDC(hwnd,hdc);<br><br>}while((GetTotalHeight()+GetY() + MOVE_DY) >=0); тут разумеется все происходит в объекте. ну, по обозначениям должно быть понятно, что происходит. да вот код ф-ии Move <br>void Obstacle::Move(int dx,int dy)<br>{<br>intX+= dx;<br>intY+= dy;<br><br>return;<br>}<br> |
Сообщ.
#2
,
|
|
|
Попробуй InvalidateRect()
|
Сообщ.
#3
,
|
|
|
я его уже попробывал. тоже не получается, так как окно ждет послыки сообщения WM_PAINT.
|
Сообщ.
#4
,
|
|
|
BitBlt( hMemDC, ...., hDC, ..... );//сохранение картинки
hMemDC = CreateCompatibleDC( hDC );//обычно hMemDC = CreateDC( "DISPLAY", .... );//в особых случаях SelectObject( hMemDC, hBmp );//собственно где будем хранить hBmp = CreateCompatibleBitmap( hMemDC, ... );//почти одно hBmp = CreateCompatibleBitmap( hDC, ... );//и то-же //Удаление в обратном порядке |
Сообщ.
#5
,
|
|
|
так, вопрос снимаетя. я просто кое-где не удалял кисть.
CreateBrush использовал, а DeleteBrush забывал. всем спасибо. |