art_zh wrote:
Mario
А пошто токмо -1 ?
Есть еще функции свертки и перемещеня окна, там тоже фон перерисовывать надо.
Кстати, следует признать - я ошибался. Ядро таки восстанавливает не весь фон, а только тот кусок который нужно.
Вот этот кусок тому подтвержение:
Code:
no_set_bgr_event:
cmp byte[REDRAW_BACKGROUND], 0 ; background update ?
jz nobackgr
cmp [background_defined], 0
jz nobackgr
; mov [draw_data+32 + RECT.left],dword 0
; mov [draw_data+32 + RECT.top],dword 0
; mov eax,[Screen_Max_X]
; mov ebx,[Screen_Max_Y]
; mov [draw_data+32 + RECT.right],eax
; mov [draw_data+32 + RECT.bottom],ebx
@@:
call drawbackground
xor eax, eax
xchg al, [REDRAW_BACKGROUND]
test al, al ; got new update request?
jnz @b
mov [draw_data+32 + RECT.left], eax
mov [draw_data+32 + RECT.top], eax
mov [draw_data+32 + RECT.right], eax
mov [draw_data+32 + RECT.bottom], eax
mov [MOUSE_BACKGROUND], byte 0
nobackgr:
Теперь нужно придумать как после того как я
поменяю событие 5, сообщить приложению какой кусок изменился. Чтобы к примеру в Icon отрисовывать не все иконки, а только затертые при перерисовке фона.
З.Ы. Оказывается фон изменяется не совсем эффективно - восстанавливается разница межу крайними положениями перетаскиваемого окна. Т.е. если окно будет в левом верхнем углу до упора, а мы его перетащим в правый нижний угол до упора, то перерисуется весь фон.