實現檔案拖放的一種簡潔方法
本文要介紹的這種方法只須呼叫乙個windows api函式dragqueryfile即可實現檔案的拖放操作,而且完全克服了上述3點不足。下面先介紹一下這個函式。
---- dragqueryfile原型為:
uint dragqueryfile (hdrop hdrop, uint ifile, lptstr lpszfile, uintcch)
---- 其中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)
::dragfinish (hdropinfo); //釋放記憶體
i=0;
delete lpszfilename;
// cdialog::ondropfiles(hdropinfo); 此語句注釋掉
}
---- 注意程式中的::dragfinish (hdropinfo);語句是必不可少的,它用於釋放windows為處理檔案拖放而分配的記憶體。
m_pmainwnd->dragacceptfiles();
enableshellopen();
registershellfiletypes(true);
之後給mainframe新增函式ondropfiles(hdrop hdropinfo)
void cmainframe::ondropfiles(hdrop hdropinfo)
else
::dragfinish (hdropinfo); //釋放記憶體
delete lpszfilename;
}舊一篇:setwindowext和setviewportext | 新一篇:如何刪除乙個資料夾
VC6 0中如何改變對話方塊的背景顏色
方法二 過載onpaint 即wm paint 訊息。有關 如下 以上例工程為準 void cexampledlgdlg onpaint 方法三 過載onctlcolor cdc pdc,cwnd pwnd,uint nctlcolor 即wm ctlcolor 訊息。具體步驟如下 以上例工程為準 ...
VC6 0對話方塊資源拷貝問題
1.在vc6中開啟老的工程,在工作區resource標籤頁中選中dialog資料夾下的資源檔案 就是雙擊後會出現編輯視窗介面的那個東西 按ctrl c edit copy也一樣 2.關閉當前工程,注意不要關閉vc6,開啟目標工程 file openworkspace 然後選中工作區的resource...
單文件 多文件 對話方塊的區別
本質上都是視窗程式,可以說都可以實現同樣的功能。只不過對話方塊框架 程式對於控制項組成的介面有更好的包裝,適應於介面通過很多控制項呈現的簡單程式。cdialog 類提供管理對話方塊的介面,visual c 對話方塊編輯器使設計對話方塊和建立它們的對話方塊模板資源更為容易,嚮導則簡化了在對話方塊中初始...