⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4_5.cpp

📁 我的作业
💻 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);					//消息处理函数声明.

BOOL InitWindowsClass(HINSTANCE hInstance);			//初始化窗口类声明
BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);//初始化窗口声明.
HWND hWndMain;

int WINAPI WinMain(HINSTANCE hInstance,
				   HINSTANCE hPrevInstance,
				   LPSTR lpCmdLine,
				   int nCmdShow)			//主函数
{
	MSG Message;
	if(!InitWindowsClass(hInstance))		//初始化窗口类.
		return FALSE;
	if(!InitWindows(hInstance,nCmdShow))	//初始化窗口.
		return FALSE;
	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;	
	double dfRadious0=200.0,dfRadious1;		
	POINT lpOuterPoints[5],lpInnerPoints[5];
	POINT lpTriangle[3];                    
	dfRadious1=dfRadious0*sin(0.1*Pi)/sin(126.0/180*Pi);
	//计算内外正五边形的点坐标.
	for(int i=0;i<5;i++)
	{
		lpOuterPoints[i].x=(long)(dfRadious0*cos(i*72.0/180*Pi));
		lpOuterPoints[i].y=(long)(dfRadious0*sin(i*72.0/180*Pi));
		lpInnerPoints[i].x=(long)(dfRadious1*cos(i*72.0/180*Pi+36.0/180*Pi));
		lpInnerPoints[i].y=(long)(dfRadious1*sin(i*72.0/180*Pi+36.0/180*Pi));
	}

	switch(iMessage)
	{
	case WM_PAINT:							
		hDC=BeginPaint(hWnd,&PtStr);		
		SetMapMode(hDC,MM_ANISOTROPIC);		
		SetWindowOrgEx(hDC,-200,-200,NULL);	

		hPen=CreatePen(PS_SOLID,1,RGB(0,0,0));	
		SelectObject(hDC,hPen);					

			
//qingcheng画五角形	
    	MoveToEx(hDC,lpOuterPoints[0].x,lpOuterPoints[0].y,NULL);
		for(i=0;i<5;i++)
		{
			hPen=CreatePen(PS_SOLID,1,RGB(0,0,0));
		    
			
			//MoveToEx(hDC,lpInnerPoints[i].x,lpInnerPoints[i].y,NULL);
			//LineTo(hDC,0,0);
		}  
	/*	for(i=0;i<5;i++)
		{
			lpTriangle[0].x=0;
            lpTriangle[0].y=0;
			lpTriangle[1]=lpOuterPoints[i%5];
			lpTriangle[2]=lpInnerPoints[i%5];
			hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30));
			SelectObject(hDC,hBrush);	
			Polygon(hDC,lpTriangle,3);	
		}

		for(i=0;i<5;i++)
		{
			lpTriangle[0].x=0;
            lpTriangle[0].y=0;
			lpTriangle[1]=lpOuterPoints[(i+1)%5];
			lpTriangle[2]=lpInnerPoints[i%5];
			hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30));
			SelectObject(hDC,hBrush);	
			Polygon(hDC,lpTriangle,3);	//画三角形区域.
		}*/

		hPen=(HPEN)(GetStockObject(PS_NULL));
        
		DeleteObject(hPen);		//删除画笔.
		DeleteObject(hBrush);	//删除画刷.
		EndPaint(hWnd,&PtStr);	//结束绘图.
		return 0;
	case WM_DESTROY:		//处理关闭窗口信息.
		PostQuitMessage(0);		//向应用程序发送WM_QUIT消息.
		return 0;
	default:
		return(DefWindowProc(hWnd,iMessage,wParam,lParam));
	}
}

BOOL InitWindows(HINSTANCE hInstance, int nCmdShow)	//初始化
{
	HWND hWnd;					//定义窗口句柄.
	hWnd=CreateWindow("Polygon",				//窗口类名.
					"五边形",					//窗口实例标题.
					WS_OVERLAPPEDWINDOW,		//窗口风格.带边框,标题栏,系统菜单和最大和最小按钮.
					CW_USEDEFAULT,				//窗口左上角坐标.
					0,							//窗口左上角坐标.
					CW_USEDEFAULT,				//窗口宽度
					0,							//窗口高度	
					NULL,						//无父窗口.
					NULL,						//无主菜单.
					hInstance,					//创建此窗口的应用程序的当前句柄.
					NULL);						//指向一个传递给窗口的参数值从指针.
												//不使用该值.
	if(!hWnd)			//如果窗口创建失败,返回false.
		return FALSE;
	hWndMain=hWnd;		//将窗口句柄传递给全局变量.
	ShowWindow(hWnd,nCmdShow);		//显示窗口.
	UpdateWindow(hWnd);				//更新并绘制用户区.
	return TRUE;
}

BOOL InitWindowsClass(HINSTANCE hInstance)	//初始化窗口类.
{
	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="Polygon";				//窗口类名.
	WndClass.lpszMenuName=NULL;						//无菜单
	WndClass.style=0;								//窗口类型为缺省类型.
	return RegisterClass(&WndClass);				//返回注册窗口的值.
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -