06简单绘图程序的实现及菜单的使用

06简单绘图程序的实现及菜单的使用

ID:20249101

大小:172.01 KB

页数:7页

时间:2018-10-11

06简单绘图程序的实现及菜单的使用_第1页
06简单绘图程序的实现及菜单的使用_第2页
06简单绘图程序的实现及菜单的使用_第3页
06简单绘图程序的实现及菜单的使用_第4页
06简单绘图程序的实现及菜单的使用_第5页
资源描述:

《06简单绘图程序的实现及菜单的使用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、06简单绘图程序的实现及菜单的使用到现在为止己经分别实现了使用鼠标绘制线段、矩形、椭圆,能不能在一个程序里实现这三种操作的切换?当然讨以!1、对绘制线段、矩形与椭圆的程序进行分析,每一种绘阁操作杏三个动作:鼠标落下、鼠标移动与鼠标弹起,分别对应于3段代码,对画线的三段代码进行分析,与这写代码相关的变量有:与消息相关的变S:HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMIParam;与绘图操作相关的变景:POINTptStart,ptEnd;BOOLbMouseDown;如果把相关代码封装在三个绘阁函数屮,则以上变:W:都是窗u函数的局部变在绘

2、阁函数中是无法访问的,可以将消息的参数作为绘图函数的参数传到绘图函数中,也可以将绘图相关的变S变成函数参数,但这样存在以下问题:参数数量较多,效率较低,如果以后因为增加绘图函数的功能需要增加新的变量则需要修改阑数的原型;因此可以将与绘图阑数相关的变景封装在一个结构体内,在窗u函数屮一个结构体变暈,给绘图闲数传入一个结构体指针。2、定义结构体如下:typcdcfstructtagDrawStru{POINTptStart,ptEnd;BOOLbMouseDown;}DRAWSTRU,*PDRAWSTRU;3、在窗口函数中定义如下静态局部变量:staticDRAWSTRUds;4

3、、定义3个阑数分别完成鼠細落卜移动和弹起的处理,代码如卜*:VOIDLineMouseDown(PDRAWSTRUpDs’HWNDhWnd,WPARAMwParam,LPARAMIParam){pDs-〉ptStart.x=LOWORD(lParam);pDs->ptStart.y=H!WORD(lParam);pDs->ptEnd.x=pDs->ptStart.x;pDs-〉ptEnd.y=pDs-〉ptStart.y;pDs->bMouscDown=TRUE;SetCapture(hWnd);}VOIDLineMouseUp(PDRAWSTRUpDs,HWNDhWnd,

4、WPARAMwParam,LPARAMIParam){HDChdc;pDs->bMouseDown=FALSE;ReleaseCapture();hdc=GetDC(hWnd);SetROP2(hdc,R2_NOT);MoveToEx(hdc,pDs-〉ptStart.x,pDs-〉ptStart.y,NULL);LineTo(hdc,pDs-〉ptEnci.x,pDs-〉ptEnd.y);pDs->ptEnd.x=LOWORD(lParam);pDs->ptEnd.y=HIWORD(lParam);SetROP2(hdc,R2_COPYPEN);MoveToEx(hdc,p

5、Ds-〉ptStart.x,pDs-〉ptStart.y,NULL);LineTo(hdc,pDs-〉ptEnd.x,pDs-〉ptEnd.y);ReleaseDC(hWnd,hdc);}VOIDLincMouscMovc(PDRAWSTRUpDs,HWNDhWnd,WPARAMwParam,LPARAMIParam){HDChdc;if(pDs->bMouseDown){hdc=GetDC(hWnd);SetROP2(hdc,R2_NOT);MoveToEx(hdc,pDs->ptStart.x,pDs->ptStart.y,NULL);LineTo(hdc,pDs->pt

6、End.x,pDs->ptEnd.y);pDs->ptEnd.x=LOWORD(lParam);pDs->ptEnd.y=HIWORD(lParam);MoveToEx(hdc,pDs-〉ptStart.x,pDs-〉ptStart.y,NULL);LineTo(hdc,pDs-〉ptEnd.x,pDs-〉ptEnd.y);ReleaseDC(hWnd,hdc);}}5、修改窗UI过程,将鼠称消总的处理代码修改为阑数调用,代码如下:caseWM_LBUTTONDOWN:LineMouseDown(&ds,hWnd,wParam,IParam);break;caseWMJLBU

7、TTONUP:LineMouseUp(&ds,hWnd,wParamJParain);break;caseWM_MOUSEMOVE:LincMoii$cMovc(&d$,hWnd,wParam,IParam);break;6、在源程序文件的起始位a添加阑数的声明:VOIDLineMouseDown(PDRAWSTRUpDs’HWNDhWnd,WPARAMwParam,LPARAMIParam);VOIDLincMouscUp(PDRAWSTRUpD$,HWNDhWnd,WPARAMwParam,LPAR

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。