关于MFC中任意对象的拖拽功能的实现(COleDataSource, COleDropTarget)

 

    拖拽功能的实现是一个全局的功能实现,也就是可以跨进程的,类似windows文件拖拽打开的功能。下面说记录的是关于任意内容的全局拖拽的实现细节。关于相关函数和对象的具体描述可以直接MSDN查看,这里就不对其进行详细的简介。

 

    大体的实现可以分为两个主要的部分:

         1. 被拖拽对象中添加COleDataSource,以处理被拖拽对象

         2. 在拖拽目标中添加COleDropTarget, 以处理拖拽目标接受拖拽的相关事件

 

    下面是具体的代码示例,这个示例的具体功能实现的是把CTreeCtrl中的一个item所关联的数据拖拽到指定的CView类中,类似与文件的拖拽打开。

 

1. 关于被拖拽对象CTreeCtrl中的相关代码实现:

     1.1.  首先在CTreeCtrl的扩展类中添加COleDataSource对象,我这里添加的是COleDataSource类型的指针。

//CDataViewTree.h

class CDataViewTree : public CTreeCtrl

{

 private:

    COleDataSource* m_dropSource;

    ... ...

    //这是开始拖拽的消息处理函数

public:
    afx_msg void OnTvnBegindrag(NMHDR *pNMHDR, LRESULT *pResult);

    ... ...

};

    1.2. 在消息映射表中添加消息映射, 具体的实现部分都在OnTvnBegingdrag()函数中。

//CDataViewTree.cpp

BEGIN_MESSAGE
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值