Реферат: Создание хранителя экрана
MaxY := R.Bottom-R.Top;
ShowWindow(PreviewWindow,sw_Show);
UpdateWindow(PreviewWindow);
Repeat
InvalidateRect(PreviewWindow,nil,False);
Sleep(30);
Until QuitSaver;
PostMessage(PreviewWindow,wm_Destroy,0,0);
End;
Нить просто заставляет обновляться изображения в нашем окне, спит на некоторое время, и обновляет изображения снова. А Windows будет посылать сообщение WM_PAINT на наше окно (не в нить !). Для того, чтобы оперировать этим сообщением, нам нужна процедура:
Function PreviewWndProc(Window:hWnd; Msg,WParam,LParam:Integer) : Integer;StdCall;
Begin
Result := 0;
Case Msg of
wm_NCCreate : Result := 1;
wm_Destroy : PostQuitMessage(0);
{ paint something }
wm_Paint : DrawSingleBox;
wm_KeyDown : QuitSaver := AskPassword;
wm_LButtonDown, wm_MButtonDown,
wm_RButtonDown, wm_MouseMove :
Begin
If (Not IsPreview) Then Begin
Dec(MoveCounter);
If (MoveCounter <= 0) Then
QuitSaver :=AskPassword;
End;
End;
Else Result := DefWindowProc