Advertisement
Guest User

Untitled

a guest
Oct 17th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. // Шаблон для последующих программ
  2. #include <windows.h>
  3. #include <tchar.h>
  4. #include <math.h>
  5. #define M_PI 3.14
  6.  
  7. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  8. TCHAR WinName[] = _T("MainFrame");
  9.  
  10. int APIENTRY WinMain(HINSTANCE This, HINSTANCE Prev, LPSTR cmd, int mode)
  11. {
  12. HWND hWnd;
  13. MSG msg;
  14. WNDCLASS wc;
  15. // Определение класса окна
  16. wc.hInstance = This;
  17. wc.lpszClassName = WinName;
  18. wc.lpfnWndProc = WndProc;
  19. wc.style = CS_HREDRAW | CS_VREDRAW;
  20. wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
  21. wc.hCursor = LoadCursor(NULL,IDC_ARROW);
  22. wc.lpszMenuName = NULL;
  23. wc.cbClsExtra = 0;
  24. wc.cbWndExtra = 0;
  25. // Заполнение окна белым цветом
  26. wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  27. if(!RegisterClass(&wc)) return 0;
  28. // создание окна
  29. hWnd = CreateWindow(WinName, _T("porabola"), WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,HWND_DESKTOP,NULL,This,NULL);
  30. ShowWindow(hWnd,mode);
  31. // цикл обработки сообщений
  32. while(GetMessage(&msg, NULL, 0, 0))
  33. {
  34. TranslateMessage(&msg);
  35. DispatchMessage(&msg);
  36.  
  37. }return 0;
  38. }
  39.  
  40. // ----------------------------------------------------------- //
  41.  
  42.  
  43.  
  44. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  45. {
  46. PAINTSTRUCT ps;
  47. HDC hdc;
  48. static int sx,sy;
  49. static HPEN hpen,hpen1,hpen2;
  50. int a, b, n, x_scr, y_scr,z_scr;
  51. double x,y,z,x_min,x_max,y_min,y_max,Kx,Ky;
  52.  
  53.  
  54.  
  55.  
  56. switch (message)
  57. {
  58. case WM_CREATE:
  59. hpen = CreatePen(PS_SOLID,2,RGB(0, 0, 255));
  60. break;
  61. case WM_SIZE:
  62. sx = LOWORD(lParam);
  63. sy = HIWORD(lParam);
  64. break;
  65.  
  66. case WM_PAINT:
  67. x_min = -100;
  68. x_max = 100;
  69. y_min = -100;
  70. y_max = 100;
  71.  
  72. Kx = (sx-220)/(x_max - x_min);
  73. Ky = (sy-220)/(y_max - y_min);
  74.  
  75. a = sx/2;
  76. b = sy/2;
  77.  
  78. hdc = BeginPaint(hWnd, &ps);
  79. SelectObject(hdc,hpen);
  80. MoveToEx(hdc,0,b,NULL);
  81. LineTo(hdc,sx,b);
  82. MoveToEx(hdc, a, 0, NULL);
  83. LineTo(hdc,a,sy);
  84. MoveToEx(hdc,20,sy-20,NULL);
  85. LineTo(hdc,sx-20,20);
  86. n = y_max-y_min;
  87. for(y = y_min;y<y_max;y+=5)
  88. {
  89. hpen1 = CreatePen(PS_SOLID,2,RGB(255,255./n*(y+y_min),255./n*(y+y_min)));
  90. SelectObject(hdc,hpen1);
  91. z = b-100*sin(M_PI/50*sqrt(x_min*x_min+y*y));
  92. MoveToEx(hdc,x_min*Kx+a+y,z+y,NULL);
  93. for(x = x_min;x<x_max;x+=5)
  94. {
  95. z = b-100*sin(M_PI/50*sqrt(x*x+y*y));
  96. LineTo(hdc,x*Kx+a+y,z+y);
  97. }
  98. }
  99. EndPaint(hWnd, &ps);
  100. break;
  101. case WM_DESTROY:
  102. DeleteObject(hpen1);
  103.  
  104.  
  105. PostQuitMessage(0);
  106. break;
  107.  
  108. default: return DefWindowProc (hWnd, message, wParam, lParam);
  109. //break;
  110. }
  111. return 0;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement