#include #include #include // Определение размеров окна const int WIDTH = 800; const int HEIGHT = 600; // Определение параметров синусоид const double PI = 3.14159265358979323846; const double X_SCALE = 0.01; const double Y_SCALE = 100.0; // Машт по Y // Основная функция для рисования синусоид void DrawSineWaves(HDC hdc) { int centerY = HEIGHT / 2; // Рисование синусоид for (double x = 0; x < WIDTH; x += 0.5) { double xVal = x * X_SCALE; int ySmall2 = static_cast(0.3 * std::sin(7 * xVal) * Y_SCALE); SetPixel(hdc, static_cast(x), centerY - ySmall2, RGB(255, 204, 0)); } } // Оконная процедура LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); DrawSineWaves(hdc); EndPaint(hwnd, &ps); } return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, uMsg, wParam, lParam); } // Основная функция WinAPI int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ PWSTR pCmdLine, _In_ int nCmdShow) { const wchar_t CLASS_NAME[] = L"SineWaveWindowClass"; WNDCLASS wc = {}; wc.lpfnWndProc = WindowProc; wc.hInstance = hInstance; wc.lpszClassName = CLASS_NAME; wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); RegisterClass(&wc); HWND hwnd = CreateWindowEx( 0, CLASS_NAME, L"Sine Waves Graph", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, WIDTH, HEIGHT, nullptr, nullptr, hInstance, nullptr ); if (hwnd == nullptr) { return 0; } ShowWindow(hwnd, nCmdShow); MSG msg; while (GetMessage(&msg, nullptr, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; }