拖放的默认实现是对大多数应用程序来说足够了,然而,许多应用程序要求这些标准改变这些标准的行为。本文将介绍怎么改变这些默认的步骤。另外,你可以使用这个技术来建立不支持符合文档作为Drop源的应用程序。
如果你正在自定义OLE拖放行为或者你已经有了一个非OLE应用程序,你必须创建一个COleDataSource对象来包含数据。当用户开始启动一个拖放操作的时候,你的代码应该在该对象调用DoDragDrop函数而不是在其他支持拖放操作的类中调用。
另外,你可以创建一个COleDropSource对象来控制Drop和重载它的许多函数,增加对你想改变的行为类型的依赖。这个Drop源对象被传递给COleDataSource::DoDragDrop来改变这些函数的默认行为。这些不同的选项让你在你的程序中支持拖放操作有更多的弹性。关于数据源的详细信息,见Data Objects and Data Sources(OLE)。
你可以重载下面的函数来自定义拖放操作:
OnBeginDrag
在你调用DoDragDrop之后如何初始化拖动
GiveFeedback
可视的返回,例如不同的拖动结果,光标不同
QueryContinueDrag
终止拖动操作。这个函数让你可以检测在拖动过程中的修饰键的状态。