很多软件都具备将文档直接拖拽到软件界面上,然后软件自动读取、解析文档,最后在界面上呈现文档内容。这里主要就是响应一个WM_DropFiles消息。下面就在一个单文档应用程序里面实现该功能。
第一步:在View的头文件添加WM_DropFiles消息响应函数声明:
afx_msg void OnDropFiles(HDROP hDropInfo);
第二步:在view的cpp文件中添加WM_DropFiles的消息映射:
ON_WM_DROPFILES()
第三步:在view的cpp文件中实现OnDropFiles消息响应函数:
void CTestView::OnDropFiles(HDROP hDropInfo) { CScrollView::OnDropFiles(hDropInfo); TCHAR filePath[1024] = {0}; //获取拖拽的文件的路径 DragQueryFile(hDropInfo , 0 , (LPTSTR)filePath ,1024); CString strFilePath = filePath; //TODO:有了文件路径后,就可以去读取文件,然后解析文件、呈现内容了 }
第四步:还需要在OnInitialUpdate函数中调用DragAcceptFiles(TRUE)方法:
void CTestView:: OnInitialUpdate () { DragAcceptFiles(TRUE); }