怎样在vc程序中实现拖放 *** 作

怎样在vc程序中实现拖放 *** 作,第1张

MFC中用于对象拖放的类

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:如何实现窗口和窗口内容在鼠标拖动下改变大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9866976.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存