VC++拖放选中对象,介绍如何拖放选中的图形对象,编译.doc

VC++拖放选中对象,介绍如何拖放选中的图形对象,编译.doc

ID:28101721

大小:156.50 KB

页数:26页

时间:2018-12-08

VC++拖放选中对象,介绍如何拖放选中的图形对象,编译.doc_第1页
VC++拖放选中对象,介绍如何拖放选中的图形对象,编译.doc_第2页
VC++拖放选中对象,介绍如何拖放选中的图形对象,编译.doc_第3页
VC++拖放选中对象,介绍如何拖放选中的图形对象,编译.doc_第4页
VC++拖放选中对象,介绍如何拖放选中的图形对象,编译.doc_第5页
资源描述:

《VC++拖放选中对象,介绍如何拖放选中的图形对象,编译.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、·VC++拖放选中对象,介绍如何拖放选中的图形对象,编译并运行本例程序,红色圆圈可以用鼠标随意拖动。实现方法和思路:当鼠标左键在图形区域被按下时,捕捉所有鼠标消息,并且响应鼠标移动消息,随时更新图形的位置,重画图形。程序编写方法如下:(1)利用AppWizard创建单文档的应用程序MoveSelOb,并且选择视图类的基类为CScrollView。(2)在视图类的头文件中增加4个变量,用来保存图形位置和鼠标捕捉情况,其代码如下:protected:constCSizem_sizeEllipse;CPointm_pointTopLeft;

2、CSizem_sizeOffset;BOOLm_bCaptured;(3)在视图类的构造函数中初始化变量,其代码如下:CMoveSelObView::CMoveSelObView():m_sizeEllipse(100,-100),m_pointTopLeft(0,0),m_sizeOffset(0,0){m_bCaptured=FALSE;}(4)在视图类的OnInitialUpdate函数中初始化视图的滚动范围。voidCMoveSelObView::OnInitialUpdate(){CScrollView::OnInitial

3、Update();//设置滚动范围CSizesizeTotal(800,1050);//8-by-10.5inchesCSizesizePage(sizeTotal.cx/2,sizeTotal.cy/2);CSizesizeLine(sizeTotal.cx/50,sizeTotal.cy/50);SetScrollSizes(MM_LOENGLISH,sizeTotal,sizePage,sizeLine);}(5)在视图类的OnDraw函数中绘图,其代码如下:voidCMoveSelObView::OnDraw(CDC*pDC)

4、{CMoveSelObDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);//创建红色画刷CBrushbrushHatch(HS_DIAGCROSS,RGB(255,0,0));CPointpoint(0,0);//转换逻辑坐标到设备坐标pDC->LPtoDP(&point);pDC->SetBrushOrg(point);CBrush*pOldBrush=pDC->SelectObject(&brushHatch);//画红色圆圈pDC->Ellipse(CRect(m_pointTopLeft,m_

5、sizeEllipse));pDC->SelectObject(pOldBrush);//TODO:adddrawcodefornativedatahere}(6)响应WM_LBUTTONDOWN消息,其代码如下:voidCMoveSelObView::OnLButtonDown(UINTnFlags,CPointpoint){CRectrectEllipse(m_pointTopLeft,m_sizeEllipse);CRgncircle;CClientDCdc(this);OnPrepareDC(&dc);dc.LPtoDP(re

6、ctEllipse);circle.CreateEllipticRgnIndirect(rectEllipse);if(circle.PtInRegion(point)){//捕捉鼠标SetCapture();m_bCaptured=TRUE;CPointpointTopLeft(m_pointTopLeft);dc.LPtoDP(&pointTopLeft);m_sizeOffset=point-pointTopLeft;//设置光标形状为十字状::SetCursor(::LoadCursor(NULL,IDC_CROSS));}C

7、ScrollView::OnLButtonDown(nFlags,point);}(7)响应WM_LBUTTONUP消息,其代码如下:voidCMoveSelObView::OnLButtonUp(UINTnFlags,CPointpoint){//TODO:Addyourmessagehandlercodehereand/orcalldefaultif(m_bCaptured){//释放鼠标捕捉::ReleaseCapture();m_bCaptured=FALSE;}CScrollView::OnLButtonUp(nFlags,

8、point);}(8)响应WM_MOUSEMOVE消息:voidCMoveSelObView::OnMouseMove(UINTnFlags,CPointpoint){if(m_bCaptured){//如果有图形被选中

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

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

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