收藏 分销(赏)

Windows-API窗口矩形绘制.doc

上传人:二*** 文档编号:4745739 上传时间:2024-10-11 格式:DOC 页数:7 大小:120.50KB
下载 相关 举报
Windows-API窗口矩形绘制.doc_第1页
第1页 / 共7页
本文档共7页,全文阅读请下载到手机保存,查看更方便
资源描述
集美大学计算机工程学院实验报告 课程名称:TCP/IP协议及程序设计 班级: 实验成绩: 实验项目名称:Windows API窗口矩形绘制程序设计 学号: 上机实践日期:2016-04-14 实验项目编号:04 组号:1 上机实践时间: 2学时 一、 实验目的 熟悉Windows程序的运行脉络,掌握运用Win32 API技术进行编程的方法。 二、实验内容与设计思想 设计一个简单的Win32程序,该程序窗口内正上方居中显示“Windows API绘制矩形程序演示”字样,在程序窗口内任意位置A按下鼠标左键、并拖动鼠标到任意位置B松开,可以AB为主对角线绘制矩形。并且用红色填充该矩形。 三、实验使用环境 操作系统: Microsoft Windows XP SP2 编程环境: Visual C++ 6.0中文企业版 四、实验步骤和调试过程 详细给出源码以及实现的效果图,并配有代码解释 #include <windows.h> #include <stdio.h> static POINT pt_star,pt_end; LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT ("HelloWin") ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = 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 = szAppName ; if (!RegisterClass (&wndclass)) { MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR) ; return 0 ; } hwnd = CreateWindow (szAppName, // window class name TEXT ("3062,3076,3080,3083,43073"), // window caption WS_OVERLAPPEDWINDOW , // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle hInstance, // program instance handle NULL) ; // creation parameters ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ; static bool bJude = false; TCHAR szBuffer[] = ""; RECT rect ; switch (message) { case WM_LBUTTONDOWN: pt_end.x = pt_star.x = LOWORD(lParam); pt_end.y = pt_star.y = HIWORD(lParam); //获得按下坐标;掩盖掉第一次按下时鼠标移动 bJude = true; return 0; case WM_MOUSEMOVE: if(bJude) { hdc = GetDC(hwnd); SelectObject(hdc,GetStockObject(NULL_BRUSH)); SetROP2(hdc,R2_NOT); //防止重影 Rectangle(hdc,pt_star.x,pt_star.y,pt_end.x,pt_end.y); pt_end.x = LOWORD(lParam); pt_end.y = HIWORD(lParam); Rectangle(hdc,pt_star.x,pt_star.y,pt_end.x,pt_end.y); ReleaseDC(hwnd,hdc); } return 0; case WM_LBUTTONUP: bJude = false; pt_end.x = LOWORD(lParam); pt_end.y = HIWORD(lParam); InvalidateRect(hwnd,NULL,true); return 0; case WM_PAINT: hdc = BeginPaint(hwnd , &ps); SetCursor (LoadCursor (NULL, IDC_WAIT)) ; ShowCursor (TRUE) ; GetClientRect (hwnd, &rect) ; DrawText (hdc, TEXT ("Windows API画线程序演示"), -1, &rect, DT_SINGLELINE | DT_CENTER) ; SelectObject(hdc,CreateSolidBrush(RGB(255,0,0))); Rectangle(hdc,pt_star.x,pt_star.y,pt_end.x,pt_end.y); EndPaint(hwnd,&ps); return 0; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; } 图(1) 图(2) 五、实验小结 图(3) 在防重影这一块,如果没有执行这一块代码,会导致画图过程中没有图(1)的框的效果;直接出现图2的效果; 本次实验过程基于实验3之上,做实验的过程中由于有上次实验的经验以及代码,编写代码的过程较快,这次实验主要是一个自制画刷的过程较为深刻,小组成员讨论较久,小组成员也深刻的体会到了SelectObject(hdc,CreateSolidBrush(RGB(255,0,0))); 这一语法的应用,以及在选取brush和pen的过程体会较深。 case WM_PAINT: hdc = BeginPaint(hwnd , &ps); SelectObject(hdc,GetStockObject(BLACK_BRUSH)); Rectangle(hdc,pt_star.x,pt_star.y,pt_end.x,pt_end.y); EndPaint(hwnd,&ps); return 0; 这块代码是从网上找的实例,刚开始,小组成员以为会有RED_BRUSH这类语法,后来程序执行不了,才发现了自定画刷的做法: SelectObject(hdc,CreateSolidBrush(RGB(255,0,0))); 这是本次实验过程中最为深刻的一个点。 图(4) 这一块代码是覆盖前一次画的矩形的图,如果缺失这一块代码会出现以下情况: 图(5) 无论鼠标从什么坐标开始点击左键,矩形框总是从最左上角开始绘图,而且只需点击一次左键便能画出矩形图。 六、附录 《网络编程技术与应用》
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 初中其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服