怎样在vc程序中实现拖放操作
2个回答
2018-08-03 · 知道合伙人软件行家
关注
展开全部
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对象,值得注意的
是:需要象上文中所说的,应该指定使用的数据格式,并按指定格式提供对象的有关数据。
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对象,值得注意的
是:需要象上文中所说的,应该指定使用的数据格式,并按指定格式提供对象的有关数据。
展开全部
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对象,值得注意的
是:需要象上文中所说的,应该指定使用的数据格式,并按指定格式提供对象的有关数据。
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对象,值得注意的
是:需要象上文中所说的,应该指定使用的数据格式,并按指定格式提供对象的有关数据。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询