/ / by moving the origin of coordinates to achieve the sine curve, the array elements can decrease the cellular 
 / / 2 * NUM, but to open up area for your array. 
 # contain  
 # consist of  
 
 # define ID_TIMER 1 
 # define NUM a thousand 
 # outline Step 10 / / Every phase of shifting 
 # define TWOPI (2 * three.14159) 
 
 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); 
 
 int WINAPI WinMain ( ; HINSTANCE hInstance, HINSTANCE hPrevInstance, 
 PSTR szCmdLine,
Microsoft Office 2007 Key, int iCmdShow) 
 {
 static TCHAR szAppName [] = TEXT (hwnd; 
 MSG msg; 
 WNDCLASS wndclass; 
 
 wndclass.style ; = CS_HREDRAW | CS_VREDRAW; 
 wndclass.lpfnWndProc = WndProc; 
 wndclass.cbCl######tra = 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 (szAppName, MB_ICONERROR); 
 return 0; 
 
 
 hwnd = CreateWindow (szAppName , TEXT (CW_USEDEFAULT, CW_USEDEFAULT, 
 NULL, NULL, hInstance, NULL); 
 ShowWindow (hwnd, iCmdShow); 
 UpdateWindow (hwnd); 
 
 while (GetMessage (& msg, NULL, 0, 0)) 
 
 TranslateMessage ( & msg); 
 DispatchMessage (& msg); 
 
 return msg.wParam; 
 } 
 
 LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
 {
 static int cxClient, cyClient; 
 HDC ; hdc; 
 int i; 
 PAINTSTRUCT ps; 
 static POINT apt [2 * NUM]; 
 static HPEN hPen1, hPen2; 
 static int step; 
 
 switch (message) 
 {
 case WM_SIZE: 
 cxClient = LOWORD (lParam); 
 cyClient = HIWORD (lParam); 
 
 for (i = 0; i <2 * NUM; i + +) 
 
 apt [i]. x = (int) (i * cxClient / NUM); 
 apt [i]. y = (int) (cyClient * (1 - sin (TWOPI * i / NUM)) / 2); 
 
 return 0; 
 case WM_CREATE: 
 hPen1 = CreatePen (PS_SOLID, 4, RGB (255,0,0));