2014年8月18日 星期一

Drag and Drop (OLE)

1. There is the MSDN document introduce it -- http://msdn.microsoft.com/en-us/library/96826a87.aspx 2. There is a document talk about how to implement it. -- http://www.codeproject.com/Articles/840/How-to-Implement-Drag-and-Drop-Between-Your-Progra 3. There is a document talk about CRicheditView with Drag & Drop -- http://computer-programming-forum.com/82-mfc/cad93aec74dd76a3.htm CRichEditView supports OLE drag and drop. It has the interfaces that determines the data it can accept. Therefore, WM_DROPFILES won't be received unless it fails to perform the OLE drag & drop. You can override CRichEditView::QueryAcceptData, which is the actual implementation of IRichEditOleCallback::QueryAcceptData. In QueryAcceptData, return S_FALSE directly. However, this disables the OLE drop/paste operation. You can also handle CRichEditView::QueryAcceptData more elaborately so that specific data can be handled in WM_DROPFILES. You may want to check CRichEditView::QueryAcceptData in viewrich.cpp for more information.