接受檔案拖拽視窗的實現

2021-04-18 21:34:42 字數 891 閱讀 4277

長期以來,我似乎都沒有對知識進行總結,寄希望於部落格吧。

早上閒著沒事,想起來一篇關於拖拽的文章,第一次見到還是借助於google大俠,搜了n久才發現該文章,如今已經滿地都是中文版本了。

本人堅持自力更生的原則,自己做一遍吧,不想只抄襲人家的內容,然後儲存一下就再也不看了。想把知識運用起來。

廢話少說,入正題。先做個簡單的,實現視窗接受拖放到上面的檔案,輸出其全路徑。

用到了如下三個函式:

void dragacceptfiles( hwnd hwnd,  bool faccept);

uint dragqueryfile(hdrop hdrop, uint ifile, lptstr lpszfile,uint cch);

void dragfinish(hdrop hdrop);

函式更詳細的解釋參看msdn。需要處理wm_dropfiles訊息。

剩下的就簡單了。

第一步,當需要開始接受檔案拖拽時,呼叫dragacceptfiles。(一般是在視窗的初始化函式中。)

第二步,在wm_dropfiles訊息中呼叫dragqueryfile函式獲取檔案列表,並在結束處理後呼叫dragfinish釋放系統分配的記憶體就可以了。

lresult oninitdialog(...)

lresult on_drop_files_msg(...)

dragfinish(hdrop);

return 0;

}**大概如此,已經能接收到拖拽到視窗上的檔案了,dragqueryfile得出的是檔案的全路徑,之所以要迴圈呼叫,

是因為拖放操作可能同時拖了n個檔案。

另有一函式dragquerypoint類似於dragqueryfile,不過它的出的是鬆開滑鼠時滑鼠的座標。並不難用。

好了,先到這。

JS 拖拽視窗的實現

分享一篇舊筆記。溫故而知新 主要思路 1,滑鼠點選拖拉框的時候確認滑鼠距離整個被拉動視窗的左上角的位置。2,滑鼠移動時候確認被拖動的視窗距離可視視窗左上角的位置與1所求得的值的差 3,邊界值判斷 貼上 html div class a div id all class all div class t...

HEX實現視窗拖拽

最近的專案有乙個這樣的需求,做乙個桌面的應用程式,不要放大 縮小 關閉按鈕。這時的視窗就無法實現拖拽功能。今天我就分享一下,用hex封裝的桌面應用程式怎麼實現拖拽功能。html頁面 如下 class fixed green leftlist 在div中可以隨意寫 div 在js檔案中可以寫如下的 w...

手動實現視窗支援拖拽

近一次查詢視窗拖拽事件時,發現相關 被注釋,然而仍然支援拖拽 drag and drop 有些疑惑便查了一下,發現除了使用訊息外,還可以通過實現以下介面的方式支援 應用程式幾乎都是用的ole 技術 1.idropsource 源 2.idroptarget 目標 3.idataobject 正在拖放...