我一直在使用WTL,從CDialogImpl類類繼承,我創建了另一個對話框主對話框內,這第二個孩子對話框的列表控件內創建了一個對話框。我想添加拖放功能到列表控件,我已經閱讀了關於WM_DROPFILES方法和關於Ole Drop Target的網頁,我選擇了後者。 我已經按照this實現了IDropTarget接口方法。 我已經設置了接受我的所有對話文件選項設置爲TRUE,我在孩子的對話類實例化的下降目標,並要求在其WM_INITDIALOGUE處理以下方法:奧萊拖放疑難解答
//drag& drop
lpDropTarget = (LPDROPTARGET)new TDropTarget(m_hWnd);
CoLockObjectExternal(lpDropTarget, true, true);
// register the HWND as a drop target
RegisterDragDrop(m_hWnd, lpDropTarget);
lpDropTarget被實例如下:
LPDROPTARGET lpDropTarget;
而且僅此而已。還沒有真正使用奧萊之前,所以我曾嘗試下面的場景中搜索運氣:
我與RegisterDragDrop登記列表控件HWND,並設置它的父對話接收通知
WM_OLEDROP WM_USER + 1
我送。確定光標拖動&刪除顯示,但沒有調用IDataTarget的功能的實現。RegisterDragDrop兒童對話&通知還。
RegisterDragDrop主對話框&通知還。
在後來的情況下,(2 & 3)將光標拖動&降幅均未甚至出現了,它向我展示了一個允許無拖&下降。 現在,所有對話框和列表控件都已設置爲接受來自Visual Studio設計器的文件。 我僅限於使用ATL/WTL/WINAPI,沒有MFC。 我在做什麼錯?
你想接受文件還是更復雜的東西? –
文件/文件夾/驅動器/我希望能夠拖放它們並只獲取它們的名稱 –
爲此,處理'WM_DROPFILES'更容易。 –