可视化编程实验四.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告实验一 实验报告 实验一 《可视化编程技术》实验报告 ——实验四 一、实验目的和要求 了解Windows 系统是如何将键盘与鼠标的输入转换成消息的; 掌握应用程序如何处理键盘消息; 掌握应用程序如何处理鼠标消息; 二、实验内容 : 问题描述: 设计一个鼠标键盘相应程序,在按下 Ctrl 键的同时按下鼠标左键,在窗口中拖动鼠标,可画出一个红色的圆;在按下 Shift 键的同时按下鼠标左键,在窗口中拖动鼠标,画出一个绿色的矩形。在画出相应的图形后,若按下键盘的“向右”键时,图形按照一定步长向右移动,当移 动到窗口的右边框时,则停止移动,并弹出警告对话框;若按下键盘的“向左”键时,图形按照 一定步长向左移动,当移动到窗口的左边框时,则停止移动,并弹出警告对话框;若按下键盘的 “向上”键时,图形按照一定步长向上移动,当移动到窗口的上边框时,则停止移动,并弹出警 告对话框;若按下键盘的“向下”键时,图形按照一定步长向下移动,当移动到窗口的下边框时, 则停止移动,并弹出警告对话框;效果图如下: 窗口标题栏写明姓名和学号。 三、程序代码 #include windows.h #include stdlib.h #include string.h 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; //定义矩形结构体.记录了图形的信息. RECT ClientRect; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, { MSG Message; int nCmdShow) //主函数 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 hB1,hB2; 定/义/设备环境句柄. WORD x,y; //定义鼠标的位置坐标. static BOOL bCircle=FALSE,bRect=FALSE; //设置绘制圆和矩形的标志变 量. PAINTSTRUCT ps; //定义绘图结构体变量. x = LOWORD(lParam); //得到鼠标的位置. y = HIWORD(lParam); GetClientRect(hWnd,ClientRect); //获得窗口大小static int flag=0; switch(iMessage) { case WM_LBUTTONDOWN: flag=0;  //处理按下鼠标左键消息. if(wParamMK_CONTROL) //同时按下 Ctrl 键时. { bCircle = TRUE; bRect = FALSE; rect1.left = x; rect1.top = y; } //画圆. //圆的左上角坐标为当前鼠标位置. else if(wParamMK_SHIFT) //同时按下 shift 键时. { bRect = TRUE; bCircle = FALSE; rect1.left = x; rect1.top = y; } //画矩形. //矩形的左上角坐标为当前鼠标位置. else { bRect = FALSE; bCircle = FALSE; } break; case WM_KEYDOWN: switch(wParam) { case VK_UP: //按 UP 键时,向上移动. rect1.top -=10; rect1.bottom -=10; if(bRect

文档评论(0)

dqy118 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海海滋实业有限公司
IP属地上海
统一社会信用代码/组织机构代码
91310115MA7DL1JF2N

1亿VIP精品文档

相关文档