API编程实现.doc

上传人:文库蛋蛋多 文档编号:2389267 上传时间:2023-02-17 格式:DOC 页数:9 大小:57KB
返回 下载 相关 举报
API编程实现.doc_第1页
第1页 / 共9页
API编程实现.doc_第2页
第2页 / 共9页
API编程实现.doc_第3页
第3页 / 共9页
API编程实现.doc_第4页
第4页 / 共9页
API编程实现.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《API编程实现.doc》由会员分享,可在线阅读,更多相关《API编程实现.doc(9页珍藏版)》请在三一办公上搜索。

1、实验课程名称:Visul C+面向对象与可视化编程试验项目名称API编程实现实验成绩实验者专业班级组别同组者试验日期11年4月14日第一部分:实验分析与设计一、 实验内容描述(问题与描述) 设计一个键盘程序,当按Ctrl键时,表明要画椭圆;当按Shift键时,表明要画矩形。然后单击有箭头键,椭圆或矩形的长度加10;单击向下箭头时,椭圆和矩形的高度加10;单击Home键时,整个椭圆或矩形向左运动;单击End键时,整个椭圆或矩形向右运动;单击PageUp键时,整个圆形或矩形向上运动;单击PageDown键时,整个圆形或矩形向下运动。下图为画图后依据上述操作把圆移到中间位置的情形。效果示意图二、 实

2、验原理与设计(包括实验方案设计、实验手段的确定、实验步骤等,用硬件逻辑或算法描述)扫描码是依赖于具体设备的,为达到设备无关性的要求,往往使用与具体设备无关的虚拟码,虚拟码是由Windows系统定义的与设备无关的键的标识。虚拟码是一种与设备无关的键盘编码,它的值存放在键盘消息的wParam参数中,用以标识哪一个键被按下或释放,最常用的虚拟码已经在Windows.h中定义。操作系统在接收到键盘输入后把消息发送给具有“输入焦点(input focus)的窗口。应用程序一般有几个窗口,但当按下某一个键时,只有一个窗口能接收到该键盘消息,接收这个键盘消息的窗口称为有“输入焦点”的窗口。在WinMain函

3、数的消息循环中包含了TranslateMessage函数,其功能是把按键消息转化为字符消息,但只有当键盘驱动程序把键盘字符映射成ASCII码后才能产生WM_CHAR消息。鼠标作为定位输入设备,通过鼠标单击、双击和拖动功能,用户可以很容易地操作基于Windows图形界面的应用程序。 Windows中通过光标来指示当前鼠标的位置,在Windows操作系统中预定义了几种光标,并在Windows.h头文件中加以定义。三、 主要仪器设备与耗材个人计算机第二部分:实验调试与结果分析一、 调试过程(包括试验方法描述、实验数据记录、实验现象记录、实验过程发现的问题等)源代码:#include #include

4、 #include long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);/消息处理函数声明.BOOL InitWindowsClass(HINSTANCE hInstance);/初始化窗口类声明BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);/初始化窗口声明.HWND hWndMain;/定义全局窗口句柄.RECT rect1;/定义矩形结构体.记录了图形的信息.int WINAPI WinMain(HINSTANCE hInstance, HINST

5、ANCE 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 Wn

6、dProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)/消息处理函数.HDC hDC;/定义设备环境句柄.static BOOL bCircle=FALSE,bRect=FALSE;/设置绘制圆和矩形的标志变量.PAINTSTRUCT ps;/定义绘图结构体变量.switch(iMessage)case WM_KEYDOWN:if(wParam = VK_CONTROL)/按下Ctrl键时.bCircle = TRUE;/画圆.bRect = FALSE;rect1.left = 0;/初始化矩形结构体.rect1.right = 0;re

7、ct1.top = 0;rect1.bottom = 0;else if(wParam = VK_SHIFT)/按下shift键时.bRect = TRUE;/画矩形.bCircle = FALSE;rect1.left = 0;/初始化矩形结构体.rect1.right = 0;rect1.top = 0;rect1.bottom = 0;else if(wParam = VK_RIGHT)rect1.right +=10;/按下右箭头时矩形框长度加10.if(bRect = TRUE | bCircle = TRUE)InvalidateRect(hWnd,NULL,TRUE);/发出重绘

8、信息.else if(wParam = VK_DOWN)rect1.bottom +=10;/按下下箭头矩形框高度加10.if(bRect = TRUE | bCircle = TRUE)InvalidateRect(hWnd,NULL,TRUE);/发出重绘信息.else if(wParam = VK_PRIOR)/按pageup键时,向上移动.rect1.top -=10;rect1.bottom -=10;if(bRect = TRUE | bCircle = TRUE)InvalidateRect(hWnd,NULL,TRUE);/发出重绘信息.else if(wParam = VK_

9、NEXT)/按pagedown键,向下移动.rect1.top +=10;rect1.bottom +=10;if(bRect = TRUE | bCircle = TRUE)InvalidateRect(hWnd,NULL,TRUE);/发出重绘信息.else if(wParam = VK_HOME)/按home键,向左移动.rect1.left -=10;rect1.right -=10;if(bRect = TRUE | bCircle = TRUE)InvalidateRect(hWnd,NULL,TRUE);/发出重绘信息.else if(wParam = VK_END)/按end键

10、,向右移动.rect1.left +=10;rect1.right +=10;if(bRect = TRUE | bCircle = TRUE)InvalidateRect(hWnd,NULL,TRUE);/发出重绘信息.break;case WM_PAINT:hDC = BeginPaint(hWnd,&ps);if(bCircle = TRUE)/绘制圆形.Ellipse(hDC,rect1.left,rect1.top,rect1.right,rect1.bottom);if(bRect = TRUE)/绘制矩形.Rectangle(hDC,rect1.left,rect1.top,re

11、ct1.right,rect1.bottom);EndPaint(hWnd,&ps);break;case WM_DESTROY:/处理退出窗口信息.PostQuitMessage(0);return 0;default:return(DefWindowProc(hWnd,iMessage,wParam,lParam);return 0;BOOL InitWindows(HINSTANCE hInstance, int nCmdShow)HWND hWnd;hWnd=CreateWindow(6_4,/窗口类名称.鼠标显示实例程序, /标题栏名称.WS_OVERLAPPEDWINDOW,/窗口

12、样式.有标题栏和最大最小化按钮.CW_USEDEFAULT,/窗口左上角坐标.0,CW_USEDEFAULT,/采用缺省的高度和宽度.0,NULL,/无父窗口.NULL,/无菜单.hInstance,/当前应用实例句柄.NULL);/指向传递给窗口的参数的指针.不用.if(!hWnd)/创建失败.return FALSE;hWndMain=hWnd;/给全局窗口句柄付值.ShowWindow(hWnd,nCmdShow);/显示窗口.UpdateWindow(hWnd);/刷新用户区.return TRUE;BOOL InitWindowsClass(HINSTANCE hInstance)W

13、NDCLASS 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.lpfnW

14、ndProc=WndProc;/消息处理函数.WndClass.lpszClassName=6_4;/窗口类名称.WndClass.lpszMenuName=NULL;/无菜单.WndClass.style=0;/缺省窗口风格.return RegisterClass(&WndClass);/返回窗口注册值.二、 实验结果与分析(包括结果描述、实验现象分析、影响因素讨论、综合分析与结论等)窗口界面截图:三、实验小结、建议及体会 通过本次实验,我学会了如何利用API编写一个小的关于Windows对键盘与鼠标响应的应用小程序;使我更加熟悉如何使用API函数编程,实现自己的目的。同时也使我对键盘和鼠标有更加深入的认识,同时也提高了我的编程能力。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号