利用MFC实现对象拖放.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用MFC实现对象拖放

利用MFC实现对象拖放 对象拖放是指对某一指定的对象,利用鼠标拖动的方法,在不同应用的窗口之间、同一应用的不同窗口之间或同一应用的同一窗口内进行移动、复制(粘贴)等操作的技术。 利用对象拖放,可以为用户提供方便、直观的操作界面。 实现对象拖放技术,需要了解、使用MFC的CView、COleDataSource和COleDropTarget等类,并利用这些类协同工作。 本文讨论了对象拖放技术,并研究了如何利用MFC实现该技术。 利用MFC实现对象拖放,编程比较容易,代码可读性好。 修改稿 利用MFC实现对象拖放? (广东商学院,广州 510320 ) 摘 要 本文讨论了对象拖放技术,并研究了如何利用MFC实现该技术;利用MFC实现对象拖放,编程比较容易,代码可读性好。 关键词 对象、拖放、MFC、面向对象的程序设计。 1.对象拖放概念 对象拖放是指对某一指定的对象,利用鼠标拖动的方法,在不同应用的窗口之间、同一应用的不同窗口之间或同一应用的同一窗口内进行移动、复制(粘贴)等操作的技术。? 对象拖放是在操作系统的帮助下完成的。 要开始一次拖动, 首先需要指定或生成被拖动的对象,然后指定整个拖放操作过程所使用的数据格式,并按指定的数据格式提供数据,最后启动对象拖放操作;当对象在某一窗口内落下时,拖放过程结束,接收拖放对象的窗口按指定的数据格式提取有关数据,并根据提取的数据生成对象。 2.MFC中用于对象拖放的类 MFC(Microsoft Foundation ClassLibrary)为实现对象拖放提供了如下三个类。为便于后边的 讨论我们先来熟悉一下这些类。 2.1.COleDataSource。用于启动一次拖放操作,并向系统提供拖放对象的数据。类中的成员 函数有如下三种: a.设定提供数据的方式和使用的数据格式。提供数据的方式有两种,一种是即时方式, 另一种是延迟方式;即时方式需要在拖动开始之前提供数据;延迟方式不需要立即提供数据,当系 统请求有关数据时,由OnRenderData()等虚函数提供所需的数据。 可以用CacheGlobalData()等函数指定使用即时方式提供数据,也可以用DelayRenderData ()等函数指定使用延时方式提供数据。 b.响应请求,提供数据。应当重载OnRenderFileData()或其他相应的虚函数,以提供有关 数据(后边将详细讨论)。 c.实施拖放操作。调用函数DoDragDrop(),开始实施拖放操作。 2.2.OleDataTarget。用于准备接收拖放对象的目标窗口;一个窗口要想能够接收拖放对象, 必须包含一个COleDataTarget对象,并注册该对象。类中主要成员函数: a.注册。函数Register()注册该对象,以便使窗口能够接收拖放对象。 b.响应拖放过程中的动作(虚成员函数) 当鼠标首次进入窗口时系统将调用 OnDragEnter(),当鼠标移出窗口时系统将调用OnDragLeave(), 当鼠标在窗口内移动, 系统将重复调用调用OnDragOver(),当对象在窗口内落下调用OnDrop()。? 2.3.OleDataObject.用于接收拖放对象,类中主要成员函数有两种: a.确定可以使用的数据格式。IsDataAvailable()等函数确定指定数据格式是否可用; b.获取数据。GetData()、GetFileData()等函数用于按指定数据格式获得数据。 3.利用MFC实现对象拖放 要实现一次对象拖放,需要做三方面的工作:对象所在的窗口准备拖放对象并启拖动操作,接受对象的窗口响应有关拖放消息并接受落下的对象,以及拖放完成时的后期处理。以下分别予以 介绍。 3.1. 拖动操作的启动。拖放操作一般是从单击鼠标左键开始。在消息WM_LBUTTONDOWN的响应 函数OnLButtonDown(...)中,首先要判定是否选定了某一对象,如果未选定或选定多个,则不能进 行拖放操作;如果选定了一个对象,则可以进行拖放操作。 要启动一次拖放操作,需要先准备一个COleDataSource对象。注意到类COleClientIten和类 COleServerItem都是从类COleDataSource上派生的,如果选定的是COleClientItem对象或者是 COleServerItem对象,则可以直接使用;否则,需要生成一个COleDataSource对象,值得注意的 是:需要象上文中所说的,应该指定使用的数据格式,并按指定格式提供对象的有关数据。 下面给出准备数据源的例子: class myDataSource: public COleDataSource { public: COLORREF color; CString str; protected

文档评论(0)

docindpp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档