今天搞了一个文件的拖拽功能,其实实现起来相当的简单。具体步骤如下:
1.在对话框属性页的Extended Styles中选中Accept Files属性。
2.添加消息响应函数 OnDropFiles(HDROP hDropInfo);
注意这个ClassWizard中可能选不到指定的消息。可以手动的在消息队列中加入如下的消息响应
BEGIN_MESSAGE_MAP(CRecPlayerDlg, CDialog)
//{{AFX_MSG_MAP(CRecPlayerDlg)
...
ON_WM_DROPFILES()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
消息函数的具体实现可以参考如下
void C***Dlg::OnDropFiles(HDROP hDropInfo)
{
// TODO: Add your message handler code here and/or call default
DWORD nFileNameSize = DragQueryFile(hDropInfo, 0, NULL, 0);
char * szFileName = new char[nFileNameSize + 1];
DragQueryFile(hDropInfo, 0, szFileName, nFileNameSize + 1);
//当得到了拖拽进入窗口的文件名(包括路径)就可以做自己的事情了
....
}