如不太強調行為正確,則改寫Dialog的OnDropFiles()也可以。
這邊選用偷懶的方式,直接改寫Dialog的OnDropFiles()。
1.先要將Dialog(CListCtrl)的Accept File屬性打開,這樣才能將檔案拖到Dialog上面並丟下。
2.加入自定訊息的
3.ON_WM_DROPFILES()
enum eMyListCtrl{ WM_USER_CHANGE_LIST = WM_APP + 0x0100 }; ON_MESSAGE( WM_USER_CHANGE_LIST, OnDropFilesToList ) void CFileSearchDlg::OnDropFiles(HDROP hDropInfo) { // TODO: Add your message handler code here and/or call default char cFilePathName[_MAX_PATH] = {0}; UINT nNumOfFiles = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0); //文件的个数 for ( UINT nIndex=0 ; nIndex< nNumOfFiles; ++nIndex ) { DragQueryFile(hDropInfo, nIndex, cFilePathName, _MAX_PATH); //得到文件名 // 把得到的文件名传给父窗口 LPARAM lParam = (LPARAM)cFilePathName; //GetParent()->SendMessage(WM_USER_CHANGE_LIST,0,lParam); this->SendMessage(WM_USER_CHANGE_LIST,0,lParam); } CDialog::OnDropFiles(hDropInfo); } LRESULT CFileSearchDlg::OnDropFilesToList(WPARAM wParam, LPARAM lParam) { //m_wndListCtrl.DeleteAllItems(); char * cFilePath = (char *)lParam;// 得到拖放文件的路径 //Check is dir or File Path this->SearchFileList(cFilePath); return true; }
No comments:
Post a Comment