VC++方块旋转设计_第1页
VC++方块旋转设计_第2页
VC++方块旋转设计_第3页
VC++方块旋转设计_第4页
VC++方块旋转设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、成绩:实 验 报 告课程名称:Visual C+面向对象与可视化程序设计实验项目:方块旋转设计姓 名:专 业:计算机科学与技术班 级:学 号:计算机科学与技术学院2016 年 11 月 19 日一、 实验目的1. 提高VC+程序设计能力2. 综合运用所学知识设计方块旋转程序二、 实验内容设计一个程序,能够显示一个方块,然后方块可以在窗口中旋转。三、 实验步骤1. 打开VS2012新建WIN32项目2. 选好保存地址,写好文件name3. 进入项目,打开cpp文件编写代码4. 其中实现旋转的方法(建立piont 数组放入方块四个顶点坐标,用r为半径的for循环建立四个点,每次四个点移动统一的角度

2、,方块便旋转了)四、 运行结果五、 程序代码/ ProjectRECT.cpp : 定义应用程序的入口点。/#include "stdafx.h"#include "ProjectRECT.h"#include<math.h>#define MAX_LOADSTRING 100#define PI atan(1.0)*4/ 全局变量:HINSTANCE hInst;/ 当前实例TCHAR szTitleMAX_LOADSTRING;/ 标题栏文本TCHAR szWindowClassMAX_LOADSTRING;/ 主窗口类名/ 此代码模块中

3、包含的函数的前向声明:ATOMMyRegisterClass(HINSTANCE hInstance);BOOLInitInstance(HINSTANCE, int);LRESULT CALLBACKWndProc(HWND, UINT, WPARAM, LPARAM);INT_PTR CALLBACKAbout(HWND, UINT, WPARAM, LPARAM);int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, _In_ in

4、t nCmdShow)UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine); / TODO: 在此放置代码。MSG msg;HACCEL hAccelTable;/ 初始化全局字符串LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);LoadString(hInstance, IDC_PROJECTRECT, szWindowClass, MAX_LOADSTRING);MyRegisterClass(hInstance);/ 执行应

5、用程序初始化:if (!InitInstance (hInstance, nCmdShow)return FALSE;hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_PROJECTRECT);/ 主消息循环:while (GetMessage(&msg, NULL, 0, 0)if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)TranslateMessage(&msg);DispatchMessage(&msg);return (

6、int) msg.wParam;/ 函数: MyRegisterClass()/ 目的: 注册窗口类。/ATOM MyRegisterClass(HINSTANCE hInstance)WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX);wcex.style= CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc= WndProc;wcex.cbClsExtra= 0;wcex.cbWndExtra= 0;wcex.hInstance= hInstance;wcex.hIcon= LoadIcon(hInstance,

7、MAKEINTRESOURCE(IDI_PROJECTRECT);wcex.hCursor= LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground= (HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName= MAKEINTRESOURCE(IDC_PROJECTRECT);wcex.lpszClassName= szWindowClass;wcex.hIconSm= LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL);return RegisterClassEx(&

8、wcex);/ 函数: InitInstance(HINSTANCE, int)/ 目的: 保存实例句柄并创建主窗口/ 注释:/ 在此函数中,我们在全局变量中保存实例句柄并/ 创建和显示主程序窗口。/BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) HWND hWnd; hInst = hInstance; / 将实例句柄存储在全局变量中 hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,

9、NULL, NULL, hInstance, NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE;/ 函数: WndProc(HWND, UINT, WPARAM, LPARAM)/ 目的: 处理主窗口的消息。/ WM_COMMAND- 处理应用程序菜单/ WM_PAINT- 绘制主窗口/ WM_DESTROY- 发送退出消息并返回/static int t=10;LRESULT CALLBACK WndProc(HWND hWnd, UINT message,

10、WPARAM wParam, LPARAM lParam)int wmId, wmEvent;PAINTSTRUCT ps;HDC hdc,oldhdc;HPEN hPen,oldhpen;POINT rect4,oldrect4;double r=100;static int cnt=0,cmt;/static int p1=0,p2=90,p3=180,p4=270;for(int i=0;i<4;i+)recti.x=(long)(r*cos(i*90.0+cnt)*PI/180);recti.y=(long)(r*sin(i*90.0+cnt)*PI/180);switch (m

11、essage)case WM_COMMAND:wmId = LOWORD(wParam);wmEvent = HIWORD(wParam);/ 分析菜单选择:switch (wmId)case ID_S1:t=10;break;case ID_S2:t=20;break;case ID_S3:t=30;break;case ID_S4:t=40;break;case ID_S5:t=50;break;case ID_S6:t=100;break;case ID_S7:t=200;break;case IDM_ABOUT:DialogBox(hInst, MAKEINTRESOURCE(IDD_

12、ABOUTBOX), hWnd, About);break;default:return DefWindowProc(hWnd, message, wParam, lParam);break;case WM_CREATE:SetTimer(hWnd,999,t,NULL);break;case WM_PAINT:hdc = BeginPaint(hWnd, &ps);/ TODO: 在此添加任意绘图代码.SetMapMode(hdc,MM_ANISOTROPIC);SetWindowOrgEx(hdc,-200,-200,NULL);hPen=CreatePen(PS_SOLID,1,

13、RGB(255,0,0);SelectObject(hdc,hPen);Polygon(hdc,rect,4);cmt=cnt;cnt+=1;DeleteObject(hPen);EndPaint(hWnd, &ps);break;case WM_TIMER:if(wParam=999)InvalidateRect(hWnd,NULL,true);/*for(int i=0;i<4;i+)oldrecti.x=(long)(r*cos(i*90.0+cmt-1)*PI/180);oldrecti.y=(long)(r*sin(i*90.0+cmt-1)*PI/180);oldhd

14、c=BeginPaint(hWnd, &ps);oldhpen=(HPEN)GetStockObject(NULL_PEN);SelectObject(oldhdc,oldhpen);Polygon(oldhdc,oldrect,4);DeleteObject(oldhpen);/SetROP2(oldhdc,R2_NOT);*/break;case WM_SIZE:InvalidateRect(hWnd,NULL,true);break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hWnd, message, wParam, lParam);return 0;/ “关于”框的消息处理程序。INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)UNREFEREN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论