鼠标作图和删除线条windows编程

鼠标作图和删除线条windows编程

ID:37738974

大小:243.66 KB

页数:7页

时间:2019-05-30

鼠标作图和删除线条windows编程_第1页
鼠标作图和删除线条windows编程_第2页
鼠标作图和删除线条windows编程_第3页
鼠标作图和删除线条windows编程_第4页
鼠标作图和删除线条windows编程_第5页
资源描述:

《鼠标作图和删除线条windows编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、10章用鼠标作图一、捕获、释放光标上一章的程序在鼠标控制方面还有问题,之所以用它作例子,完全是为了让大家将鼠标事件搞明白,这一章,我们就来纠正这些问题点。首先要掌握ClipCursor()函数,这个函数将可以将光标限定在窗口有效区内,注意:这个函数的参数用的矩形座标是整个屏幕的座标,这是因为鼠标是全屏动作的。因此,我们还必须学会将窗口有效区座标转换为屏幕座标。ClientToScreen()函数可以实现这一目的,不过这一函数在MFC中的参数和SDK中的参数不一样,MFC中转换的是一矩形块,而SDK转换的是一个点。所以,SDK编程中,下

2、面例子是先转换窗口有效区的(0,0)点,再计算出矩形右下角的点。BOOLClientToScreen(BOOLClipCursor(HWNDhWnd,//窗口句柄constRECT*lpRect//屏幕座标的矩形块LPPOINTlpPoint//屏幕座标的点);//参数为NULL时为取消该功能);LONGclsCur;boolbDrawing=false;//画图状态为truePOINTSstart;//开始点LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAM

3、lParam){;switch(message){caseWM_LBUTTONDOWN:bDrawing=true;//描画状态开始start=MAKEPOINTS(lParam);//开始点保存于start中//取得窗口有效区RECTrect;GetClientRect(hWnd,&rect);//转换窗口有效区为屏幕座标POINTpoint;point.x=0,point.y=0;ClientToScreen(hWnd,&point);rect.top=point.y;rect.left=point.x;rect.bottom+=

4、rect.top;rect.right+=rect.left;//将光标限定在窗口有效区内ClipCursor(&rect);//rect一定要是屏幕座标if(!clsCur){clsCur=GetClassLong(hWnd,GCL_HCURSOR);//取当前窗口的光标}SetClassLong(hWnd,GCL_HCURSOR,NULL);//设置当前窗口的光标为NULLSetCursor(LoadCursor(NULL,IDC_CROSS));//设置当前光标为十字形break;caseWM_MOUSEMOVE:HDChdc;

5、hdc=GetDC(hWnd);if(bDrawing){MoveToEx(hdc,start.x,start.y,NULL);LineTo(hdc,LOWORD(lParam),HIWORD(lParam));}ReleaseDC(hWnd,hdc);break;caseWM_LBUTTONUP:bDrawing=false;//描画状态结束ClipCursor(NULL);//使光标可以在屏幕任意位置移动SetClassLong(hWnd,GCL_HCURSOR,clsCur);//设置窗口光标为原先的光标SetCursor((H

6、CURSOR)clsCur);//设置当前光标为原先的光标break;caseWM_DESTROY:PostQuitMessage(0);break;default:returnDefWindowProc(hWnd,message,wParam,lParam);}return0;}二、消除移动轨迹上例中,想要画一条线(即鼠标按下到松开的一条线),结果却将鼠标移动的“轨迹”画了出来,这些“轨迹”必须擦掉。VC不提供擦掉已经画好的图案的功能,所谓“擦掉”,就是选用某种方式重画,使得看上去象重画一样。通过SetROP2()函数就可以实现这个

7、功能,这个函数将反转屏幕颜色,这样第二次画时就恢复为原来的颜色。注意:SetROP2()函数这是设置画图模式的函数,是设置前景与背景的关系。intSetROP2(HDChdc,//HDCintfnDrawMode//描画模式);值说明R2_BLACK象素颜色始终为0(即黑色)R2_WHITE象素颜色始终为1(即白色)R2_COPYPEN象素为画笔的颜色R2_NOTCOPYPEN象素为画笔相反的颜色PixelisacombinationofthecolorscommontoboththescreenR2_MASKNOTPENandthe

8、inverseofthepen.PixelisacombinationofthecolorscommontoboththepenR2_MASKPENandthescreen.Pixelisacombinationofth

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

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

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