文档详情

Windows实验报告第二次实验.doc

发布:2016-06-26约字共7页下载文档
文本预览下载声明
Windows实验报告 计算机科学与技术学院 计112 1113022032 康照玲 一、实验一 1、题目:在一个窗口中央加载一个任意位图,位图尺寸为窗口面积的四分之一,当单击鼠标左键或键盘上的向上箭头时,位图向上移动,当移动到窗口的上边界时,在模式对话框中显示“不能再向上移动了”字样;当单击鼠标右键或键盘上的向下箭头时,位图向下移动,当到达窗口的下边界时,在模式对话框中显示“不能再向下移动了”字样;当单击键盘上的向左箭头时,位图向左移动,当移动到窗口的左边界时,在模式对话框中显示“不能再向左移动了”字样;当单击键盘上的向右箭头时,位图向右移动,当移动到窗口的右边界时,在模式对话框中显示“不能再向右移动了”字样。并要求图片在移动到窗口的任意边界时不消失。 2、关键代码分析 首先设置窗口大小,加载位图,获得位图左上角的坐标,在按下上下左右键的时候对相关坐标进行加减,同时建立相关的模式对话框,在对位图进行移动到相关边界时出现相关对话框。 相关代码: PAINTSTRUCT ps; //定义包含绘图信息的结构变量 switch(iMessage) { case WM_KEYDOWN: switch(wParam) { case VK_UP: //按上箭头时,位置-10 iY=iY-10; break; case VK_DOWN: //按下箭头时,位置+10 iY=iY+10; break; case VK_LEFT: //按左箭头时,位置-10 iX=iX-10; break; case VK_RIGHT: //按右箭头时,位置+10 iX=iX+10; break; } InvalidateRect(hWnd,NULL,1);//刷新用户区 break; case WM_CREATE: //初始化窗口消息 hDC=GetDC(hWnd); //得到设备环境指针 hdcmem=CreateCompatibleDC(hDC); //得到内存指针 ReleaseDC(hWnd,hDC); //删除设备环境指针 case WM_PAINT: //处理绘图消息 hDC=BeginPaint(hWnd,ps); //得到设备环境指针 if(iX0iXiWindowWidth/2) //当位图完整的在窗口中时 { SelectObject(hdcmem,hBm); //选入内存句柄 BitBlt(hDC,iX,iY,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);//输出位图 } else if(iX=0) //当位图的左边界超出了窗口时 { DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG3),hWnd,(DLGPROC)ModalDlgProc); } else //当位图的右边界超出了窗口时 { DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG4),hWnd,(DLGPROC)ModalDlgProc); } if(iY0iYiWindowHeight/2) //当位图完整的在窗口中时 { SelectObject(hdcmem,hBm); //选入内存句柄 BitBlt(hDC,iX,iY,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY); break; //输出位图 } else if(iY=0) //当位图的上边界超出了窗口时 { DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,(DLGPROC)ModalDlgProc); } else //当位图的下边界超出了窗口时 { DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG2),hWnd,(DLGPROC)ModalDlgProc); } EndPaint(hWnd,ps); //输出环境指针 break; case WM_DESTROY: //关闭窗口消息 DeleteObject(hBm); //删除内存句柄 PostQuitMessage(0); return 0; default: return(DefWindowProc(hWnd,iMessage,
显示全部
相似文档