myseventh.cpp
字号:
#include<windows.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define Pi 3.1415926
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);//消息处理函数声明
int nNum=0,nMaxNum=20;//nMaxNum为叶片循环一周中绘图的次数//nNum记录了当前的次数
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nCmdShow)//主函数
{
MSG Message;//定义消息变量
HWND hWnd;
WNDCLASS WndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));//背景色为白色
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//采用默认图标
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName="4_8";
WndClass.lpszMenuName=NULL;
WndClass.style=0;
if(!RegisterClass(&WndClass))//注册窗口
{
MessageBeep(0);
return FALSE;
}
hWnd=CreateWindow("4_8",//窗口类名
"4_8",//标题名
WS_OVERLAPPEDWINDOW,//带标题栏,最大和最小按钮的窗口
CW_USEDEFAULT,
0,
600,//采用宽度为450,高度为600
450,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWnd,nCmdShow);//显示窗口
UpdateWindow(hWnd);//更新并绘制用户区
while(GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);//消息循环
DispatchMessage(&Message);
}
return Message.wParam;
}
long WINAPI WndProc(HWND hWnd,UINT iMessage,
UINT wParam,LONG lParam)
{
HDC hDC;//定义设备环境句柄
HBRUSH hBrush;//定义画刷句柄
HPEN hPen;//定义画笔句柄
PAINTSTRUCT PtStr;//定义包含绘图信息的结构体变量
int nCentreX,nCentreY;//定义三个叶片的圆心坐标
double fAngle;
switch(iMessage)
{
case WM_PAINT:
hDC=BeginPaint(hWnd,&PtStr);
SetMapMode(hDC,MM_ANISOTROPIC);
SetWindowExtEx(hDC,400,300,NULL);
SetViewportExtEx(hDC,600,450,NULL);
SetViewportOrgEx(hDC,300,200,NULL);
//绘制外圆
hPen=(HPEN)GetStockObject(BLACK_PEN);
SelectObject(hDC,hPen);
Ellipse(hDC,-100,-100,100,100);
//绘制风车的叶片
hBrush=CreateSolidBrush(RGB(255,0,0));//画红色叶片
SelectObject(hDC,hBrush);
fAngle=2*Pi/nMaxNum*nNum;
nCentreX=(int)(50*cos(fAngle));
nCentreY=(int)(50*sin(fAngle));
Pie(hDC,nCentreX-50,nCentreY-50,
nCentreX+50,nCentreY+50,
(int)(nCentreX+50*cos(fAngle)),(int)(nCentreY+50*sin(fAngle)),
(int)(nCentreX+50*cos(fAngle+Pi)),(int)(nCentreY+50*sin(fAngle+Pi)));
hBrush=CreateSolidBrush(RGB(255,255,0));//画天蓝色叶片
SelectObject(hDC,hBrush);
nCentreX=(int)(50*cos(fAngle+2*Pi/3));
nCentreY=(int)(50*sin(fAngle+2*Pi/3));
Pie(hDC,nCentreX-50,nCentreY-50,
nCentreX+50,nCentreY+50,
(int)(nCentreX+50*cos(fAngle+2*Pi/3)),
(int)(nCentreY+50*sin(fAngle+2*Pi/3)),
(int)(nCentreX+50*cos(fAngle+Pi+2*Pi/3)),
(int)(nCentreY+50*sin(fAngle+Pi+2*Pi/3)));
hBrush=CreateSolidBrush(RGB(0,255,255));//画黄色叶片
SelectObject(hDC,hBrush);
nCentreX=(int)(50*cos(fAngle+4*Pi/3));
nCentreY=(int)(50*sin(fAngle+4*Pi/3));
Pie(hDC,nCentreX-50,nCentreY-50,
nCentreX+50,nCentreY+50,
(int)(nCentreX+50*cos(fAngle+4*Pi/3)),
(int)(nCentreY+50*sin(fAngle+4*Pi/3)),
(int)(nCentreX+50*cos(fAngle+Pi+4*Pi/3)),
(int)(nCentreY+50*sin(fAngle+Pi+4*Pi/3)));
nNum++;//当前次序加一
Sleep(100);//等待0.1秒
InvalidateRect(hWnd,NULL,1);//重绘窗口区域
EndPaint(hWnd,&PtStr);//释放环境指针
return 0;
case WM_DESTROY://关闭窗口
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -