
MFC(Microsoft Foundation ClassLibrary)为实现对象拖放提供了如下三个类。为便于后边的
讨论我们先来熟悉一下这些类。
21COleDataSource。用于启动一次拖放 *** 作,并向系统提供拖放对象的数据。类中的成员
函数有如下三种:
a设定提供数据的方式和使用的数据格式。提供数据的方式有两种,一种是即时方式,
另一种是延迟方式;即时方式需要在拖动开始之前提供数据;延迟方式不需要立即提供数据,当系
统请求有关数据时,由OnRenderData()等虚函数提供所需的数据。
可以用CacheGlobalData()等函数指定使用即时方式提供数据,也可以用DelayRenderData
()等函数指定使用延时方式提供数据。
b响应请求,提供数据。应当重载OnRenderFileData()或其他相应的虚函数,以提供有关
数据(后边将详细讨论)。
c实施拖放 *** 作。调用函数DoDragDrop(),开始实施拖放 *** 作。
22OleDataTarget。用于准备接收拖放对象的目标窗口;一个窗口要想能够接收拖放对象,
必须包含一个COleDataTarget对象,并注册该对象。类中主要成员函数:
a注册。函数Register()注册该对象,以便使窗口能够接收拖放对象。
b响应拖放过程中的动作(虚成员函数) 当鼠标首次进入窗口时系统将调用
OnDragEnter(),当鼠标移出窗口时系统将调用OnDragLeave(), 当鼠标在窗口内移动,
系统将重复调用调用OnDragOver(),当对象在窗口内落下调用OnDrop()。
23OleDataObject用于接收拖放对象,类中主要成员函数有两种:
a确定可以使用的数据格式。IsDataAvailable()等函数确定指定数据格式是否可用;
b获取数据。GetData()、GetFileData()等函数用于按指定数据格式获得数据。
3利用MFC实现对象拖放
要实现一次对象拖放,需要做三方面的工作:对象所在的窗口准备拖放对象并启拖动 *** 作,接受对象的窗口响应有关拖放消息并接受落下的对象,以及拖放完成时的后期处理。以下分别予以
介绍。
31 拖动 *** 作的启动。拖放 *** 作一般是从单击鼠标左键开始。在消息WM_LBUTTONDOWN的响应
函数OnLButtonDown()中,首先要判定是否选定了某一对象,如果未选定或选定多个,则不能进
行拖放 *** 作;如果选定了一个对象,则可以进行拖放 *** 作。
要启动一次拖放 *** 作,需要先准备一个COleDataSource对象。注意到类COleClientIten和类
COleServerItem都是从类COleDataSource上派生的,如果选定的是COleClientItem对象或者是
COleServerItem对象,则可以直接使用;否则,需要生成一个COleDataSource对象,值得注意的
是:需要象上文中所说的,应该指定使用的数据格式,并按指定格式提供对象的有关数据。
1:通过窗口名称查找窗口句柄使用FindWindowEx,具体参考MSDN:>
窗口缩放不是问题,只要你的窗口边框是Resizing就行了
重载OnPaint()然后GetClientRect()再用你得到的这个RECT把你的内容缩放到合适的尺寸,刷到屏幕上。
以上就是关于怎样在vc程序中实现拖放 *** 作全部的内容,包括:怎样在vc程序中实现拖放 *** 作、vc++获取某游戏窗口句柄并控制鼠标单击窗口内某一坐标,代码怎么写,求一例子。就用QQ当例子吧!获、VC:如何实现窗口和窗口内容在鼠标拖动下改变大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)