COleDropTarget:主要用于实现窗口对拖拽操作的支持,只要在目标窗口中定义COleDropTarget的成员变量,然后调用一下COleDropTarget::Register()函数将目标窗口注册一下就可以使窗口执行拖放操作了。
WM_DROPFILES:主要实现对从资源管理器中将文件拖放到窗口中的响应,主要便于实现文件传输相关功能。在窗口调用AcceptFiles(TRUE)将窗口设定成支持文件拖放的,然后添加WM_DROPFILES消息的消息映射及响应函数,在响应函数中可以获取用户从资源管理器中拖动了哪些文件。
为了是目标窗口支持上述两种行为的拖拽,同时添加了上述两种机制。结果却发现:在Win7系统中,VC6编出来的程序出现问题,两种拖拽相互冲突,都不支持了,而在XP系统中,则么有这样的问题。后来将工程迁移到VS2010中,则发现在Win7没有这样的问题了。
后来大概的想了一下,估计原因是这样子的:vc6是上个世纪开发出来的东东,对新近的系统Win7支持多少是有点问题的,即VC6的程序在Win7下面可能有些地方会有、问题的。而VS2010是新近开发出来的,对Win7的支持想必是很好的,再就是VS2010中OLE相关的可能已经升级,所以使用VS2010后就没有出现类似的问题。