實現檔案拖放的一種簡潔方法 (轉)
實現拖放的一種簡潔方法
湖北省襄樊市局中心
張洪徵
---- 讀了南京海軍指揮學院黃嚮明同志在貴報上發表的《用MFC實現檔案拖放到編輯框》一文獲益匪淺,同時也發現了該方法的幾點不足:1、自已編寫專用的類,複雜、維護麻煩;2、必須要將檔案拖到對話方塊中的編輯上,拖動的檔名才被接受,而標準的程式只須將檔案拖放到對話方塊即可被接受;3、只能接受一個拖放的檔案。本文要介紹的這種方法只須一個WINDOWS DragQueryFile即可實現檔案的拖放操作,而且完全克服了上述3點不足。下面先介紹一下這個函式。
---- DragQueryFile原型為:
UINT DragQueryFile( HDROP hDrop, UINT iFile, LPTSTR lpszFile, UINT cch )
---- 其中hDrop是指向拖動檔案結構的控制程式碼;
---- iFile 是以0開始的被託動檔案的序號,因為一次可能拖動多個檔案。當此引數
---- 設為0xFFFFFFFF,則函式返回拖動檔案的數量;
---- lpszFile 是指向檔名的緩衝區;
---- cch 是檔名緩衝區的大小,即檔名的字元數。
---- 明確了該函式的引數後,就是一件很簡單的事情了。以下給出一個完整的例項,程式執行後彈出一個對話方塊,可以拖動任意數量的檔案或目錄到上面,鬆開滑鼠後,程式先顯示拖放檔案的數量,然後將拖放的檔名全部顯示在一個List Box控制元件中。具體步驟如下:
- 建立一個基於對話方塊的工程drop,然後其它選項全部用預設值。
- 選中IDD_DROP_DIALOG對話方塊中Extended Styles的Accept files屬性。
- 給IDD_DROP_DIALOG對話方塊新增一個List Box 控制元件IDC_LIST1。
- 在ClassWizard中給CdropDlg類新增成員變數m_list,型別為ClistBox。
- 給CdropDlg類中增加處理WINDOWS訊息WM_DROPFILES的函式,接受給出的預設名字OnDropFiles,然後輸入以下程式碼:
void CDropDlg::OnDropFiles(HDROP hDropInfo) { char *lpszFileName=new char[512],cFileCount[10]; int nFileCount,i; nFileCount=::DragQueryFile (hDropInfo,0xFFFFFFFF,NULL,512); ::AfxMessageBox(itoa(nFileCount,cFileCount,10)); for (i=0;i ---- 注意程式中的::DragFinish (hDropInfo);語句是必不可少的,它用於釋放WINDOWS為處理檔案拖放而分配的記憶體。 ---- 執行此程式可以看到,拖動的檔案只要一進入對話方塊的邊界,滑鼠上立刻會現一個“+”,在對話方塊上的任意位置釋放滑鼠,拖放的檔案都會被接受,完全解決了《用MFC實現檔案拖放到編輯框》必須將檔案拖到編輯框的不足;而且拖放是透過呼叫WINDOWS API函式實現的,因此程式非常健壯,幾乎沒有什麼維護量。程式在INDOWS98、vc++5.0下透過。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-987973/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python中4種方法實現 xls 檔案轉 xlsxPython
- 轉載一段簡潔明瞭的python程式碼 實現了讀取檔案並按行反轉後輸出Python
- 使用vue實現行列轉換的一種方法。Vue
- PDF轉文字檔案的最簡單方法
- 三種簡單的PDF檔案快速壓縮方法
- ServletOutputStream在nginx轉發下輸出檔案下載的一種方法ServletNginx
- 簡潔易用的PDF檔案壓縮工具-Lightweight PDF
- Yoink for Mac(臨時檔案拖放助手)Mac
- 技術債! 怎樣簡潔高效的實現多個 Enum 自由轉換
- Blazor 使用拖放(drag and drop)上傳檔案Blazor
- 使用TS+Sequelize實現更簡潔的CRUD
- PDF檔案如何轉換EXCEL,一個方法教你輕鬆轉換各種檔案,讓老闆驚喜不斷Excel
- 如何實現檔案共享,檔案共享的設定方法-鐳速
- java實現檔案的下載的方法概述Java
- 15種下載檔案的方法
- 下載檔案的15種方法
- RSS 一種簡潔優雅的資料訂閱方式
- Linux 搜尋檔案和資料夾的 4 種簡單方法Linux
- 簡潔的MobX與MVP思想—大型專案實踐MVP
- 一種子圖佈局方法的實現
- Playwright使用Typescript實現在測試case檔案中呼叫另一個檔案中的方法TypeScript
- PDF檔案轉HTML方法HTML
- Blazor 拖放上傳檔案轉換格式並推送到瀏覽器下載Blazor瀏覽器
- 超級簡單的實現window共享Linux檔案Linux
- GFS(谷歌檔案系統)的JAVA簡單實現谷歌Java
- python儲存檔案的幾種方法Python
- 流量中提取檔案的若干種方法
- 監聽檔案修改的四種方法
- 計算檔案Checksum的幾種方法
- 大檔案傳輸的9種方法
- 【node】檔案上傳功能簡易實現
- 簡談檔案下載的三種方式
- 一種動態實現核隔離的方法
- 一種簡單地實現 SAP UI5 Master detail 頁面的方法UIASTAI
- 用 Laravel 遷移檔案新增表註釋的一種方法Laravel
- TypeScript 中的決策表:一種被低估的簡潔程式碼模式TypeScript模式
- 自定義檔案上傳功能實現方法
- 5種快速查詢容器檔案系統中檔案的方法
- oracle匯入dmp檔案的2種方法Oracle