Hi, I have another problem.
I wrote program that enebles user to draw with mouse.
Here's the code:

Code:
#include <windows.h>


LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("Connect") ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;
     
     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
     
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("Program requires Windows NT!"), 
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }
     
     hwnd = CreateWindow (szAppName, TEXT ("Connect-the-Points Mouse Demo"),
                          WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;
     
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
     
     while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }

return (int)msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{

	static int iCount,iPrevX,iPrevY;
	HDC hdc;
	PAINTSTRUCT ps;
	RECT rect;

	switch(message)
	{
	case WM_LBUTTONDOWN:
		iCount=0;
		iPrevX=LOWORD(lParam);
		iPrevY=HIWORD(lParam);
		return 0;
	case WM_MOUSEMOVE:
		if(wParam & MK_LBUTTON)
		{
			hdc=GetDC(hwnd);
			MoveToEx(hdc,iPrevX,iPrevY,NULL);
			LineTo(hdc,LOWORD (lParam), HIWORD (lParam));
			iPrevX=LOWORD (lParam);
			iPrevY=HIWORD (lParam);	
			ReleaseDC(hwnd,hdc);
		}
		return 0;
	case WM_LBUTTONUP:
         InvalidateRect (hwnd, NULL, FALSE) ;
         return 0 ;

	case WM_PAINT:
		GetClientRect(hwnd,&rect);
		hdc=BeginPaint(hwnd,&ps);
		InvalidateRect(hwnd,&rect,FALSE);
		EndPaint(hwnd,&ps);
		return 0;
               
     case WM_DESTROY:
          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;

}
Everything works fine, but when I resize windows or minimize it everything is erased. I know this is probably because of WM_PAINT because this message is sent every time window is resized. How to prevent contents of window being erased. Is there any function that disable save what was before nad then restor it?
I tried with InvalidateRect, but no success.
Then you very much for your help!