afx_msg
void
ondropfiles(hdrop hdropinfo);
然後,在cpp檔案中的訊息對映中新增:
on_wm_dropfiles()
最後,在cpp檔案中新增ondropfiles函式的實現,對拖拽的檔案進行處理。下面是完整的**:
class
clxedit :
public
cedit;//
lxedit.cpp
#include
"stdafx.h
"#include
"lxedit.h
"implement_dynamic(clxedit, cedit)
clxedit::clxedit()
clxedit::
~clxedit()
begin_message_map(clxedit, cedit)
on_wm_dropfiles()
end_message_map()
void
clxedit::ondropfiles(hdrop hdropinfo)
可以看到,在上面的**中,得到拖拽檔名的是函式dragqueryfile。這是windows提供的乙個api函式,用來得到一次成功的拖拽操作中的檔名。下面是該函式的原型:
//引數說明:
//hdrop 控制代碼,由訊息傳入。
//ifile 檔案索引。
//如果該引數值為0xffffffff,函式返回拖拽操作中的檔案數量。
//如果該引數值為0到拖拽檔案數量之間的數值,函式將對應索引的檔名拷貝到引數lpszfile所指的字串內。
//lpszfile 存放檔名的字串。如果該引數為null,函式返回需要的字串長度。
//cch 存放檔名的字串的長度。
uint dragqueryfile(hdrop hdrop, uint ifile, lptstr lpszfile, uint cch); //
lxlistbox.h
class
clxlistbox :
public
clistbox;//
lxlistbox.cpp
#include
"stdafx.h
"#include
"lxlistbox.h
"implement_dynamic(clxlistbox, clistbox)
clxlistbox::clxlistbox()
clxlistbox::
~clxlistbox()
begin_message_map(clxlistbox, clistbox)
on_wm_dropfiles()
end_message_map()
void
clxlistbox::ondropfiles(hdrop hdropinfo)
clistbox::ondropfiles(hdropinfo);}
補充一下,函式dragqueryfile得到的檔名,是帶完整路徑的檔名。
最後,提醒一下:要想你的控制項具有拖拽功能,一定要把它的accept files屬性設定為true!要不,上面寫的那些**是不起作用的!
js拖拽功能
html css mod mod hd mod corner jsvar mod document.getelementbyid mod var hd document.getelementbyid hd var corner document.getelementbyid corner funct...
WPF實現拖拽功能
兩個content控制項之間實現拖拽功能,在乙個控制項中啟動拖拽操作,在另乙個控制項中處理事件,如下,在兩個listview之間拖拽 在啟動拖拽控制項的mousemove事件裡啟動拖拽 private void listview1 mousemove object sender,mouseevent...
CTreeCtrl 節點支援拖拽功能
1 首先,從ctreectrl派生乙個類cxtreectrl。2 此類需處理以下問題 a 基本拖動實現 b 處理無意拖動 c 能處理拖動過程中滾動問題 d 拖動過程中節點會智慧型展開。具體實現辦法 a 基本拖動實現 當我們要拖動乙個專案時,樹型檢視控制項會給它的父視窗傳送tvn begindrag通...