第26周-window程序设计(基础篇)-第5章(图形基础)-SINEWAVE.C正弦波

来源:互联网 发布:windows打印服务器 编辑:程序博客网 时间:2024/05/23 10:14

1、SINEWAVE.C正弦波:

/*SINEWAVE.C 画正弦波——Sine Wave Using Polyline*/#include<windows.h>#include<math.h>#define NUM 1000#define TWOPI (2*3.14159)LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,              PSTR szCmdLine, int iCmdShow)){  static TCHAR szAppName[] = TEXT("SineWave");  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 ("Sine Wave Using Polyline"),          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 msg.wParam ; }LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {   static int cxClient, cyClient ;   HDC hdc ;   int i ;   PAINTSTRUCT ps ;   POINT apt [NUM] ;   switch (message)    {     case WM_SIZE:       cxClient = LOWORD (lParam) ;//窗口框架客户区与视图窗口客户区的区别应注意       cyClient = HIWORD (lParam) ;//当用户调节了窗口尺寸后的,客户区长度和宽度,lParam是32位的,低16位时长度,高16位时宽度       return 0 ;     case WM_PAINT:       hdc =BeginPaint (hwnd, &ps) ;       MoveToEx (hdc, 0, cyClient / 2, NULL) ;       LineTo (hdc, cxClient, cyClient / 2) ;       for (i = 0 ; i < NUM ; i++)        {          apt[i].x = i * cxClient / NUM ;          apt[i].y = (int) (cyClient / 2 * (1 - sin (TWOPI * i / NUM))) ;         }       Polyline (hdc, apt, NUM) ;       return 0 ;     case WM_DESTROY:       PostQuitMessage (0) ;       return 0 ;    }  return DefWindowProc (hwnd, message, wParam, lParam) ; }


0 0
原创粉丝点击