windows api窗口矩形绘制

上传人:第*** 文档编号:32819403 上传时间:2018-02-12 格式:DOC 页数:7 大小:135.50KB
返回 下载 相关 举报
windows api窗口矩形绘制_第1页
第1页 / 共7页
windows api窗口矩形绘制_第2页
第2页 / 共7页
windows api窗口矩形绘制_第3页
第3页 / 共7页
windows api窗口矩形绘制_第4页
第4页 / 共7页
windows api窗口矩形绘制_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《windows api窗口矩形绘制》由会员分享,可在线阅读,更多相关《windows api窗口矩形绘制(7页珍藏版)》请在金锄头文库上搜索。

1、集美大学计算机工程学院实验报告课程名称:TCP/IP 协议及程序设计 班级: 实验成绩:实验项目名称:Windows API 窗口矩形绘制程序设计学号: 上机实践日期:2016-04-14实验项目编号:04 组号:1 上机实践时间: 2 学时一、实验目的熟悉 Windows 程序的运行脉络,掌握运用 Win32 API 技术进行编程的方法。二、实验内容与设计思想设计一个简单的 Win32 程序,该程序窗口内正上方居中显示“Windows API 绘制矩形程序演示”字样,在程序窗口内任意位置 A 按下鼠标左键、并拖动鼠标到任意位置 B 松开,可以 AB 为主对角线绘制矩形。并且用红色填充该矩形。

2、三、实验使用环境操作系统: Microsoft Windows XP SP2编程环境: Visual C+ 6.0 中文企业版四、实验步骤和调试过程详细给出源码以及实现的效果图,并配有代码解释#include #include 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 TC

3、HAR 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 = L

4、oadCursor (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 = CreateWi

5、ndow (szAppName, / window class nameTEXT (3062,3076,3080,3083,43073), / window captionWS_OVERLAPPEDWINDOW , / window styleCW_USEDEFAULT, / initial x positionCW_USEDEFAULT, / initial y positionCW_USEDEFAULT, / initial x sizeCW_USEDEFAULT, / initial y sizeNULL, / parent window handleNULL, / window men

6、u handlehInstance, / program instance handleNULL) ; / creation parametersShowWindow (hwnd, iCmdShow) ;UpdateWindow (hwnd) ;while (GetMessage (&msg, NULL, 0, 0)TranslateMessage (DispatchMessage (return msg.wParam ;LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)HDC hdc

7、 ;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,GetStockOb

8、ject(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 = HI

9、WORD(lParam);InvalidateRect(hwnd,NULL,true);return 0;case WM_PAINT:hdc = BeginPaint(hwnd , SetCursor (LoadCursor (NULL, IDC_WAIT) ;ShowCursor (TRUE) ;GetClientRect (hwnd, DrawText (hdc, TEXT (Windows API 画线程序演示), -1, &rect,DT_SINGLELINE | DT_CENTER) ;SelectObject(hdc,CreateSolidBrush(RGB(255,0,0);Re

10、ctangle(hdc,pt_star.x,pt_star.y,pt_end.x,pt_end.y);EndPaint(hwnd,return 0;case WM_DESTROY:PostQuitMessage (0) ;return 0 ;return DefWindowProc (hwnd, message, wParam, lParam) ;图(1) 图(2)五、实验小结图(3)在防重影这一块,如果没有执行这一块代码,会导致画图过程中没有图(1)的框的效果;直接出现图 2 的效果;本次实验过程基于实验 3 之上,做实验的过程中由于有上次实验的经验以及代码,编写代码的过程较快,这次实验主要

11、是一个自制画刷的过程较为深刻,小组成员讨论较久,小组成员也深刻的体会到了 SelectObject(hdc,CreateSolidBrush(RGB(255,0,0);这一语法的应用,以及在选取 brush 和 pen 的过程体会较深。case WM_PAINT:hdc = BeginPaint(hwnd , SelectObject(hdc,GetStockObject(BLACK_BRUSH);Rectangle(hdc,pt_star.x,pt_star.y,pt_end.x,pt_end.y);EndPaint(hwnd,return 0;这块代码是从网上找的实例,刚开始,小组成员以为会有 RED_BRUSH 这类语法,后来程序执行不了,才发现了自定画刷的做法:SelectObject(hdc,CreateSolidBrush(RGB(255,0,0);这是本次实验过程中最为深刻的一个点。图(4)这一块代码是覆盖前一次画的矩形的图,如果缺失这一块代码会出现以下情况: 图(5)无论鼠标从什么坐标开始点击左键,矩形框总是从最左上角开始绘图,而且只需点击一次左键便能画出矩形图。六、附录网络编程技术与应用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号