1、可视化程序设计实验三剖析 可视化程序设计实验三 设计一个应用程序(圆) 学生: 学号: 指导老师:李家军 2015.4.25一、实验任务:窗口显示后在客户区显示有一个红色两象素宽线内部为黄色的圆,点击A或a键则圆会放大,点击S或s则圆会缩小,点击A/a一定次数后圆不能再放大,显示出一个对话框提示不能再大了,单击确定后对话框关闭, 点击S/s一定次数后圆不能再缩小,显示出一个对话框提示不能再小了,单击确定后对话框关闭. 要求窗口的标题栏显示你的学号和姓名,并将圆的面积显示在客户区的(100,20)以右的区域,格式为:圆的面积=(xxxx) 平方立米. 本实验要求必须采用API方式编程。二、步骤:
2、1. 自主学习API方式编程;2.确定相关变量,圆形面积,按键;3.用窗口类来创建对象,调用函数;4.在6.0环境下调试运行程序,并纠错;5.分析实验结果,作出相应总结。三、程序说明及程序流程图程序说明:窗口显示后在客户区显示有一个红色两象素宽线内部为黄色的圆,点击A或a键则圆会放大,点击S或s则圆会缩小,点击A/a 3次数后圆不能再放大,显示出一个对话框提示不能再大了,单击确定后对话框关闭, 点击S/s 3次数后圆不能再缩小,显示出一个对话框提示不能再小了,单击确定后对话框关闭. 要求窗口的标题栏显示你的学号和姓名,并将圆的面积显示在客户区的(100,20)以右的区域,格式为:圆的面积=(x
3、xxx) 平方立米. 四实验结果及截图:1实验程序运行结果:2按下按键a或A 图形变大3. 按下按键a 或A三次后 图形无法变大 弹出提示框4按下按键s或S 图形变小5. 按下按键s 或S三次后 图形无法变大 弹出提示框四源程序 #include#include#includeWNDCLASSEX wndclass;HWND hWnd;MSG msg;LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);void Draw(HDC hdc,int i);void Text(HDC hdc,int i);int ii=0;int WINAPI Win
4、Main( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) /主函数 wndclass.cbSize=sizeof(WNDCLASSEX); /窗口类的大小 wndclass.style=0; /窗口类型为默认类型 wndclass.lpfnWndProc=WndProc; /窗口处理函数是WndProc wndclass.cbClsExtra=0; /窗口类无扩展句柄 wndclass.cbWndExtra=0; /窗口实例无扩展 wndclass.hInstance=hInstance; /
5、当前实例 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); /窗口类的图标 wndclass.hCursor=LoadCursor(NULL,IDC_ARROW); /窗口采用箭头光标 wndclass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH); /窗口背景为白色 wndclass.lpszMenuName=NULL; /窗口中无菜单 wndclass.lpszClassName=窗口; /窗口类名为窗口 wndclass.hIconSm=NULL; /窗口类的小图标 if(!Registe
6、rClassEx(&wndclass) /注册失败报警 MessageBeep(0); return FALSE; hWnd=CreateWindow /创建窗口 ( 窗口, /窗口类名 何博 12020229, /窗口实例的标题名 WS_OVERLAPPEDWINDOW, /窗口的风格 CW_USEDEFAULT,CW_USEDEFAULT, /窗口左上角坐标 默认 CW_USEDEFAULT,CW_USEDEFAULT, /窗口高和宽 默认 0, /无父窗口 0, /无主菜单 hInstance, /创建此窗口应用程序的当前句柄 0 /不使用该值 ); ShowWindow(hWnd,nC
7、mdShow); /显示窗口 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; /定义指向包含绘图信息的结构体变量 sw
8、itch(message) case WM_CHAR: /按键响应 if(wParam=A|wParam=a) /A/a图形增大并显示面积 hdc=GetDC(hwnd); ii+; Text(hdc,ii); Draw(hdc,ii); ReleaseDC(hwnd,hdc); if(wParam=S|wParam=s) /S/s图形减小并显示面积 hdc=GetDC(hwnd); ii-; Text(hdc,ii); Draw(hdc,ii); ReleaseDC(hwnd,hdc); break; case WM_PAINT: /处理覆盖的情况 hdc=BeginPaint(hwnd,&
9、ps); Text(hdc,ii); Draw(hdc,ii); EndPaint(hwnd,&ps); break; case WM_DESTROY: /发出WM_QUIT消息 PostQuitMessage(0); break; default: return DefWindowProc(hwnd,message,wParam,lParam); return 0;void Draw(HDC hdc,int i) /画图函数 HPEN hPen; /定义指向画笔的句柄 HBRUSH hBrush; /定义指向画刷的句柄 SetMapMode(hdc,MM_ANISOTROPIC); /设置映
10、像模式 if(i=-3&i=3) hPen=CreatePen(PS_SOLID,2,RGB(255,255,255); hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,255,255); /画刷 SelectObject(hdc,hBrush); /选择画刷 SelectObject(hdc,hPen); /选择画笔 Ellipse(hdc,0,0,1000,1000); /清屏 hPen=CreatePen(PS_SOLID,2,RGB(255,0,0); hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,2
11、55,0); /画刷 SelectObject(hdc,hBrush); /选择画刷 SelectObject(hdc,hPen); /选择画笔 Ellipse(hdc,200-20*i,200-20*i,400+20*i,400+20*i); /绘制圆 else if(i-3) ii=-3; hPen=CreatePen(PS_SOLID,2,RGB(255,255,255); hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,255,255); /画刷 SelectObject(hdc,hBrush); /选择画刷 SelectObject(hdc,
12、hPen); /选择画笔 Ellipse(hdc,0,0,1000,1000); /清屏 MessageBox(hWnd,不能再小了!,来自何博的提示,0); else ii=3; hPen=CreatePen(PS_SOLID,2,RGB(255,255,255); hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,255,255); /画刷 SelectObject(hdc,hBrush); /选择画刷 SelectObject(hdc,hPen); /选择画笔 Ellipse(hdc,0,0,1000,1000); /清屏 MessageBox(h
13、Wnd,不能再大了!,来自何博的提示,0); void Text(HDC hdc,int i) /输出文本函数 TEXTMETRIC tm; switch(i) case 0: SetTextColor(hdc,RGB(0,0,0); GetTextMetrics(hdc,&tm); TextOut(hdc,100,20,圆的面积=(31400)平方米,22); break; case 1: SetTextColor(hdc,RGB(0,0,0); GetTextMetrics(hdc,&tm); TextOut(hdc,100,20,圆的面积=(45216)平方米,22); break; c
14、ase 2: SetTextColor(hdc,RGB(0,0,0); GetTextMetrics(hdc,&tm); TextOut(hdc,100,20,圆的面积=(61544)平方米,22); break; case 3: SetTextColor(hdc,RGB(0,0,0); GetTextMetrics(hdc,&tm); TextOut(hdc,100,20,圆的面积=(80384)平方米,22); break; case -1: SetTextColor(hdc,RGB(0,0,0); GetTextMetrics(hdc,&tm); TextOut(hdc,100,20,圆
15、的面积=(20096)平方米,22); break; case -2: SetTextColor(hdc,RGB(0,0,0); GetTextMetrics(hdc,&tm); TextOut(hdc,100,20,圆的面积=(11304)平方米,22); break; case -3: SetTextColor(hdc,RGB(0,0,0); GetTextMetrics(hdc,&tm); TextOut(hdc,100,20,圆的面积= (5024)平方米,22); break; default: SetTextColor(hdc,RGB(0,0,0); GetTextMetrics(hdc,&tm); TextOut(hdc,100,20,错误!无法再进行操作!,22); break;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1