您好,欢迎访问三七文档
当前位置:首页 > 中学教育 > 初中教育 > Windows API窗口画线程序
集美大学计算机工程学院实验报告课程名称:TCP/IP协议与通信程序设计班级:实验成绩:实验项目名称:WindowsAPI窗口画线程序设计学号:上机实践日期:2016-04-07实验项目编号:03组号:1上机实践时间:2学时一、实验目的理解并熟悉Windows程序消息映射的思想,熟练掌握运用Win32API技术进行编程的方法。为Windows通信程序打下坚实的基础。二、实验内容与设计思想设计一个简单的Win32程序,该程序窗口内正上方居中显示“WindowsAPI画线程序演示”字样,在程序窗口内任意位置按下鼠标左键并拖动到窗口范围内任意位置,松开鼠标左键即可绘制一条蓝色的直线。三、实验使用环境操作系统:MicrosoftWindowsXPSP2编程环境:VisualC++6.0中文企业版四、实验步骤和调试过程详细给出源码以及实现的效果图,并配有代码解释源码:#includewindows.hLRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow){TCHARSoftName[]=TEXT(划线程序);HWNDhwnd;MSGmsg;WNDCLASSwndclass;wndclass.style=CS_HREDRAW|CS_VREDRAW;wndclass.lpfnWndProc=WndProc;wndclass.cbClsExtra=0;wndclass.cbWndExtra=0;wndclass.hInstance=hInstance;wndclass.hIcon=LoadIcon(hInstance,SoftName);wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName=NULL;wndclass.lpszClassName=SoftName;if(!RegisterClass(&wndclass)){MessageBox(NULL,TEXT(ThisprogramrequiresWindowsNT!),SoftName,MB_ICONERROR);return0;}hwnd=CreateWindow(SoftName,SoftName,WS_OVERLAPPEDWINDOW,GetSystemMetrics(SM_CXSCREEN)/4,GetSystemMetrics(SM_CYSCREEN)/4,GetSystemMetrics(SM_CXSCREEN)/2,GetSystemMetrics(SM_CYSCREEN)/2,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,iCmdShow);UpdateWindow(hwnd);while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}returnmsg.wParam;}LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam){staticPOINTpt[2];//定义存放结构体类型的点的坐标PAINTSTRUCTps;//定义指向包含绘图信息的结构体变量HDChdc;//定义指向设备的句柄HPENhPen;//定义指向画笔的句柄RECTrect;//定义指向矩形区域的结构体变量switch(message){caseWM_CREATE:return0;caseWM_LBUTTONDOWN://鼠标点击左键后获取该点的坐标病放到POINT结构体内pt[0].x=LOWORD(lParam);pt[0].y=HIWORD(lParam);return0;caseWM_MOUSEMOVE://按下了左键就获取点的坐标并放到结构体内,只要没按下键或按得不是左键俊不获取坐标if(wParam&MK_LBUTTON){pt[1].x=LOWORD(lParam);pt[1].y=HIWORD(lParam);}InvalidateRect(hwnd,NULL,TRUE);//窗体重新绘制(用于下一个WM_PAINT消息到来时)return0;caseWM_PAINT://处理绘图消息hdc=BeginPaint(hwnd,&ps);//开始窗口绘制GetClientRect(hwnd,&rect);//获取窗口客户区的尺寸DrawText(hdc,TEXT(WindowsAPI画线程序演示!),-1,&rect,DT_SINGLELINE|DT_CENTER);;//显示文本串hPen=CreatePen(PS_SOLID,2,RGB(0,0,255));//创建画笔,样式为实线,宽度为2.颜色为蓝色SelectObject(hdc,hPen);//选择画笔MoveToEx(hdc,pt[0].x,pt[0].y,0);//移到刚才存放的鼠标左键按下的坐标点LineTo(hdc,pt[1].x,pt[1].y);//从当前坐标连线到pt[1]坐标所在位置即划成一条直线EndPaint(hwnd,&ps);//释放设备环境句柄,结束窗口绘制return0;caseWM_DESTROY:PostQuitMessage(0);return0;}returnDefWindowProc(hwnd,message,wParam,lParam);}实验结果:五、实验小结六、附录《网络编程技术与应用》
本文标题:Windows API窗口画线程序
链接地址:https://www.777doc.com/doc-4294250 .html