Консультация № 66113
08.12.2006, 15:18
0.00 руб.
0 2 2
Добрый день. У еня возникла проблема с перерисовкой при изменении размеров окна. Все что было нарисовано исчезает :(. В приложении часть кода который рисует круги. если можно, укажите что нужно дописать чтобы небыло этой проблемы. Зарание всем спасибо.

Приложение:
.ELSEIF uMsg==WM_MOUSEMOVE jmp fallthr ; Fall through.ELSEIF uMsg==WM_LBUTTONDOWN LOWORD lParam mov centreX,eax ; Set circle centre coords HIWORD lParam mov centreY,ebx ; mov centreset,TRUE invoke InvalidateRect, hWnd, NULL, FALSE fallthr: LOWORD lParam mov circumX,eax HIWORD lParam mov circumY,ebx ; invoke drawcircle.ELSEIF uMsg==WM_LBUTTONUP .IF centreset invoke SetROP2, hdc, R2_COPYPEN invoke drawcircle invoke InvalidateRect, hWnd, NULL, FALSE .ENDIF.ELSEIF uMsg==WM_PAINT invoke BeginPaint,hWnd, ADDR ps mov hdc,eax .IF centreset invoke drawcircle .ENDIF invoke EndPaint,hWnd, ADDR ps

Обсуждение

Неизвестный
08.12.2006, 15:29
общий
это ответ
Здравствуйте, Nickolai!

При изменении размеров centerset остается в значении false.
Добавь примерно такое:
.ELSEIF uMsg==WM_SIZE
mov centreset,TRUE
Виндовс и сама хорошо решает, когда нужно перерисовать окно, а когда нет. Поэтому при обработке сообщения WM_PAINT можно смело убрать проверку на значение centreset.
давно
Советник
419
1011
08.12.2006, 15:30
общий
это ответ
Здравствуйте, Nickolai!
Сделай перехват на WM_ERASEBACKGND
и там рисуй
Форма ответа