可视化程序设计实验三剖析.docx

上传人:b****3 文档编号:4465107 上传时间:2022-12-01 格式:DOCX 页数:10 大小:111.01KB
下载 相关 举报
可视化程序设计实验三剖析.docx_第1页
第1页 / 共10页
可视化程序设计实验三剖析.docx_第2页
第2页 / 共10页
可视化程序设计实验三剖析.docx_第3页
第3页 / 共10页
可视化程序设计实验三剖析.docx_第4页
第4页 / 共10页
可视化程序设计实验三剖析.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

可视化程序设计实验三剖析.docx

《可视化程序设计实验三剖析.docx》由会员分享,可在线阅读,更多相关《可视化程序设计实验三剖析.docx(10页珍藏版)》请在冰豆网上搜索。

可视化程序设计实验三剖析.docx

可视化程序设计实验三剖析

 

 

可视化程序设计实验三

 

设计一个应用程序(圆)

学生:

学号:

指导老师:

李家军

 

2015.4.25

一、实验任务:

窗口显示后在客户区显示有一个红色两象素宽线内部为黄色的圆,点击A或a键则圆会放大,点击S或s则圆会缩小,点击A/a一定次数后圆不能再放大,显示出一个对话框提示不能再大了,单击确定后对话框关闭,点击S/s一定次数后圆不能再缩小,显示出一个对话框提示不能再小了,单击确定后对话框关闭.要求窗口的标题栏显示你的学号和姓名,并将圆的面积显示在客户区的(100,20)以右的区域,格式为:

圆的面积=(xxxx)平方立米.本实验要求必须采用API方式编程。

二、步骤:

1.自主学习API方式编程;

2.确定相关变量,圆形面积,按键;

3.用窗口类来创建对象,调用函数;

4.在6.0环境下调试运行程序,并纠错;

5.分析实验结果,作出相应总结。

三、程序说明及程序流程图

程序说明:

窗口显示后在客户区显示有一个红色两象素宽线内部为黄色的圆,点击A或a键则圆会放大,点击S或s则圆会缩小,点击A/a3次数后圆不能再放大,显示出一个对话框提示不能再大了,单击确定后对话框关闭,点击S/s3次数后圆不能再缩小,显示出一个对话框提示不能再小了,单击确定后对话框关闭. 要求窗口的标题栏显示你的学号和姓名,并将圆的面积显示在客户区的(100,20)以右的区域,格式为:

圆的面积=(xxxx)平方立米.

四.实验结果及截图:

1实验程序运行结果:

 

2按下按键‘a’或‘A’图形变大

 

3.按下按键‘a’或‘A’三次后图形无法变大弹出提示框

4.按下按键‘s’或‘S’图形变小

 

5.按下按键‘s’或‘S’三次后图形无法变大弹出提示框

 

四.源程序

 

 

#include

#include

#include

WNDCLASSEXwndclass;

HWNDhWnd;

MSGmsg;

LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);

voidDraw(HDChdc,inti);

voidText(HDChdc,inti);

intii=0;

intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)//主函数

{

wndclass.cbSize=sizeof(WNDCLASSEX);//窗口类的大小

wndclass.style=0;//窗口类型为默认类型

wndclass.lpfnWndProc=WndProc;//窗口处理函数是WndProc

wndclass.cbClsExtra=0;//窗口类无扩展句柄

wndclass.cbWndExtra=0;//窗口实例无扩展

wndclass.hInstance=hInstance;//当前实例

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(!

RegisterClassEx(&wndclass))//注册失败报警

{

MessageBeep(0);

returnFALSE;

}

hWnd=CreateWindow//创建窗口

"窗口",//窗口类名

"何博12020229",//窗口实例的标题名

WS_OVERLAPPEDWINDOW,//窗口的风格

CW_USEDEFAULT,CW_USEDEFAULT,//窗口左上角坐标默认

CW_USEDEFAULT,CW_USEDEFAULT,//窗口高和宽默认

0,//无父窗口

0,//无主菜单

hInstance,//创建此窗口应用程序的当前句柄

0//不使用该值

);

ShowWindow(hWnd,nCmdShow);//显示窗口

UpdateWindow(hWnd);//绘制用户区

while(GetMessage(&msg,NULL,0,0))//消息循环

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

returnmsg.wParam;//程序终止时将信息返回系统

}

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)//窗口函数代码

{

HDChdc;//定义指向设备的句柄

PAINTSTRUCTps;//定义指向包含绘图信息的结构体变量

switch(message)

{

caseWM_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;

caseWM_PAINT:

//处理覆盖的情况

hdc=BeginPaint(hwnd,&ps);

Text(hdc,ii);

Draw(hdc,ii);

EndPaint(hwnd,&ps);

break;

caseWM_DESTROY:

//发出WM_QUIT消息

PostQuitMessage(0);

break;

default:

returnDefWindowProc(hwnd,message,wParam,lParam);

}

return0;

}

voidDraw(HDChdc,inti)//画图函数

{

HPENhPen;//定义指向画笔的句柄

HBRUSHhBrush;//定义指向画刷的句柄

SetMapMode(hdc,MM_ANISOTROPIC);//设置映像模式

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,255,0));//画刷

SelectObject(hdc,hBrush);//选择画刷

SelectObject(hdc,hPen);//选择画笔

Ellipse(hdc,200-20*i,200-20*i,400+20*i,400+20*i);//绘制圆

}

elseif(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,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(hWnd,"不能再大了!

","来自何博的提示",0);

}

}

voidText(HDChdc,inti)//输出文本函数

{

TEXTMETRICtm;

switch(i)

{

case0:

SetTextColor(hdc,RGB(0,0,0));

GetTextMetrics(hdc,&tm);

TextOut(hdc,100,20,"圆的面积=(31400)平方米",22);

break;

case1:

SetTextColor(hdc,RGB(0,0,0));

GetTextMetrics(hdc,&tm);

TextOut(hdc,100,20,"圆的面积=(45216)平方米",22);

break;

case2:

SetTextColor(hdc,RGB(0,0,0));

GetTextMetrics(hdc,&tm);

TextOut(hdc,100,20,"圆的面积=(61544)平方米",22);

break;

case3:

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,"圆的面积=(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