//функцией CombineRgnO.
h - CreateRectRgn(0.0.10.10); //Для считывания из окна региона обновления создается вспомогательный регион
}
break;
case WM_NCPAINT: Bord-1; return 0;
//Перехватывая это сообщение и минуя вызов DefWindowProcO оператором //return, мы не даем системе восстановить стандартный вид фона и рамки //и испортить наш фон.
case WM_NCM0USEM0VE: //Система обновляет изображения значков «Свернуть». «Восстановить» и пр.
case WM_NCACTIVATE: //Это сообщение приходит при потере и восстановлении фокуса ввода.
Bord - 1: //Поэтому устанавливаем признак необходимости обновления рамки.
return 1;
case WMJRASEBKGND: {
Erase - 1;
Res - GetUpdateRgn(hWnd.h.FALSE); //Читаем регион обновления if (Res-NULLREGION) //Если пришло сообщение WM_ERASEBKGND. значит, обязательно должен быть //непустой регион обновления
{Inva11dateRect(hWnd.NULL.FALSE); //В этом случае требуем обновить все окно, так как конкретная область //обновления неизвестна
Res - GetUpdateRgn(hWnd.h.FALSE): }
OffsetRgn(h.rrX.rrY+rrC
//int Res2 - DefWindowProc(hWnd.message.wParam.lParam); //в нашей ситуации стирать дефектную область не имеет смысла - весь фон //обновляем сами.
ValidateRect(hWnd.NULL); //Удаляем дефектную область окна
SendMessageChWnd.WM_PAINT.0.0); //Обновляем изображение
return 0;
}
case WM_PAINT: {
if(Bord && Erase ) //И рабочая область, и заголовок требуют
Res - CombineRgn(h.hNC.h.RGN_0R); //обновления - объединяем регионы.
HDC hdc - GetWindowDC(hWnd); //Получаем контекст для рисования в окне
i f(Erase)
Res - SelectClipRgn(hdc.h);
else
Res - SelectClipRgn(hdc.hNC): //Обновляем только неклиентскую область ShowRis(hdc.&Fon); //Выводимые объекты отсекаются по ShowRis(hdc.&GI); //занесенному в контекст региону отсечения. ShowRis(hdc.(RIS*)&Tm); ReleaseDC(hWnd.hdc); }
Bord - 0;Erase-0;
Задания для самостоятельного выполнения
return 0;
case WM_LBUTT0ND0WN:
if(TestClick(&Tm.hWnd.message.wParam.lParam))
return 0; //Сообщение поглотила сенсорная область тумблера. MessageBox(hWnd."Щелчок по полю рисунка"."".NULL); break;