Visual C++/Windows SDK Program for the Generation of Sinusoidal(Sine) Wave | CS1255 - Visual Programming Laboratory


AIM:
 To write a Visual C++/Windows SDK Program for the Generation of Sinusoidal(Sine) Wave in CS1255 - Visual Programming Lab.

SOURCE CODE:
#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("sine wave");
    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("programe requires window NT!"),szAppName,MB_ICONERROR);
        return 0;
    }
    hWnd=CreateWindow( szAppName, TEXT("JEBASTIN - 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);
        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;
    }
    return DefWindowProc(hWnd,message,wParam,lParam);
}

OUTPUT:
Previous
Next Post »

Still not found what you are looking for? Try again here.