WM_PRINT обрабатывается в точности как WM_PAINT, за исключением того, что BeginPaint/EndPaint вызывать не надо, т.к. HDC уже имеется в wParam. Я обычно делаю так (C для наглядности): Код (Text): case WM_PAINT: if(GetUpdateRect(hWnd,0,0)){ Paint(BeginPaint(hWnd,&paintstruct)); EndPaint(hWnd,&paintstruct); } break; case WM_PRINTCLIENT: Paint((HDC)wParam); break; Процедура Paint отрисовывает содержимое окна (через BitBlt, к примеру) Для использования стиля AW_BLEND надо учесть, что в коде AnimateWindow в Win 2000 есть баг. Кто-то из разработчиков не дружит с логическими операциями и перепутал OR и XOR Баг исправляется обёрткой: Код (Text): void __stdcall AnimateWnd(HWND hWnd,int param1,int param2){ SetWindowLong(hWnd,GWL_EXSTYLE,original_style | 0x80000); AnimateWindow(hWnd,param1,param2); SetWindowLong(hWnd,GWL_EXSTYLE,original_style); return; } Выставить флаг 0x80000 глобально не решает проблемы, т.к. AnimateWindow на 2к имеет вредную привычку иногда его сбрасывать