AIM:
To write a Visual C++/Windows SDK Program for the Generation of Sinusoidal(Sine) Wave in CS1255 - Visual Programming Lab.
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:
EmoticonEmoticon