[圖片來自]
如果有人依據How to Implement Drag and Drop Between Your Program and Explorer的文章自己將他的Class加入自己程式之中,或許會發現無法順利將CMyDropTarget 順利的在自己程式中Register,尋找一些書籍之後,我在MFC (Programming Windows with MFC, 2/e)中Putting It All Together: The Widget Application尋找出解決的方式
那是因為程式沒有對於OLE做起始化的設定,請在自己程式引用
#include <afxole.h>
並且在::InitInstance()加入
if (!AfxOleInit ()) {
AfxMessageBox (_T (“AfxOleInit failed, you may not use drag and drop”));
return FALSE;
}
就可以了~~~~
[圖片來自:]
最近開始研習一些關於WIN GUI上面的一些操作與視覺部分的修改,順便也開始研究去修改一些WINDOW上面的基本操作,當然DND(DRAG AND DROP)是一定會去觸碰到的一部份。
在WINDOW上面對於DRAG AND DROP的操作上,主要可以透過兩種方式去處理,分別是透過_WM_DROPFILES_跟_使用OLE的DRAG AND DROP_。這兩種主要差別在於,使用_WM_DROPFILES_的方式僅能處理外部拖曳見來的檔案,並且是在拖曳之後的動作。而_使用OLE的DRAG AND DROP_的方式,可以去客製化整個流程包括OnDragOver、OnDragLeave、OnDragEnter等等的Event。
在此我就不詳細介紹這兩種的原理~因為我所提供的網頁裡面都有詳細的說明,不然、也可以參考MSDN裡面的”drag and drop, about OLE drag and drop”
參考網址:
http://www.thecodeproject.com/listctrl/filedroplistctrl.asp?df=100&forumid=306&exp=0&select=68072
http://www.codeproject.com/shell/explorerdragdrop.asp?select=502828&df=100&forumid=1699&exp=0
(簡單講解 WM_DROPFILES)http://www.codeguru.com/Cpp/Cpp/cpp_mfc/dragdrop/article.php/c4059/
http://www.funducode.com/freevc/controls/controls8/controls8.htm