CFileDialog實現多選

2021-09-23 15:35:46 字數 1206 閱讀 1663

// create dialog to open multiple files.

cfiledialog filedlg(true, null, null, ofn_hidereadonly | ofn_overwriteprompt | ofn_allowmultiselect | ofn_explorer, _t(「tbl檔案(.tbl)|.tbl||」));

// .ofn_allowmultiselect,允許多選

const int nmaxfiles = 100;

const int nmaxpathbuffer = (nmaxfiles * (max_path + 1)) + 1;

lpstr pc = (lpstr)malloc(nmaxpathbuffer * sizeof(char));//申請空間存放開啟的檔名

memset(pc, 0, nmaxpathbuffer * sizeof(char));

if (pc)

if (idok == filedlg.domodal())

}如上面的**通過乙個全域性的二維陣列,將filename 逐個複製到二維陣列,就能獲取所有選中的檔案的檔名。

ofn_allowmultiselect,允許多選,必須設定

getstartposition

對於選擇了多個檔案的情況得到第乙個檔案位置。

position pos = filedlg.getstartposition();// 這裡返回的pos是個位址,這個位址裡儲存的就是選中的檔案的檔案路徑和檔名,路徑與檔名之間用『.』就是0隔開的。

如pos=0x33f104,檢視該位址如下圖,儲存的就是檔案路徑

如下圖選中4個檔案

filename = filedlg.getnextpathname(pos);//返回選定檔案檔名

這個函式返回的就是上面pos的位址裡的檔案路徑,並將pos設定到下乙個選中的檔案路徑的位址

CFileDialog多選檔案的最大數量

cfiledialog這個類用來選擇檔案不錯,不過針對多選,預設的最 擇檔案數量有限,它的最大字串緩衝大小僅有260,這時候需要對它的資料成員m ofn進理處理,如下 所示 dword nfilenumbers 500 cfiledialog最 擇檔案數量 cfiledialog filedlg t...

gridview拖動實現多選

用於記錄,滑鼠是否已按下 bool ismousedown false 用於滑鼠拖動多選,標記是否記錄開始行 bool issetstartrow false 用於滑鼠拖動多選,記錄開始行 private int startrowhandle 1 用於滑鼠拖動多選,記錄現在行 private int...

使用MFC的CFileDialog實現選擇多個檔案

cfiledialog opendlg true,bopenfiledialog為true時為開啟檔案,為false時為儲存檔案 null,null,ofn allowmultiselect,dwflags為ofn allowmultiselect表示可以選擇多個檔案 構建cfieldialog物件...