欢迎来到虫虫下载站 | 资源下载 资源专辑 关于我们
虫虫下载站

myseventh.cpp

visual c++面向对象与可视化程序设计
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 + -