在Windows窗口里画五角星
#include<windows.h>
#include<math.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
double PI = 3.1415926;//定义圆周率
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
static TCHAR szAppName[] = TEXT("MyWindows");
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("这个程序需要在Windows NT才能运行!"),szAppName,MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(szAppName,
TEXT("Crush画的五角星"),
WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL,
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)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
double linelength=200;
double next_x=200,next_y=200;
switch(message)
{
case WM_PAINT:
hdc = BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rect);
MoveToEx(hdc,next_x,next_y,NULL);
/*下一个点:x:是该点的x减去边长乘cos72度*/
/*下一个点:y:是该点的y加上边长乘sin72度*/
next_x=next_x-linelength*cos(2*PI/5);
next_y=next_y+linelength*sin(2*PI/5);
LineTo(hdc,next_x,next_y);//连线
/*计算下一个点的坐标*/
next_x=next_x+linelength*cos(PI/5);
next_y=next_y-linelength*sin(PI/5);
LineTo(hdc,next_x,next_y);//连线
/*计算下一个点的坐标*/
next_x-=linelength;
LineTo(hdc,next_x,next_y);//连线
/*计算下一个点的坐标*/
next_x=next_x+linelength*cos(PI/5);
next_y=next_y+linelength*sin(PI/5);
LineTo(hdc,next_x,next_y);//连线
LineTo(hdc,200,200);//连到起点
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}