现在有很多软件都支持拖拽功能,就是用鼠标拖着文件放到软件窗口中某个位置,软件就可以做出相应的反应。比如,Windows自带的播放软件Windows Media Player,你可以拖着一个媒体文件放到它的主窗口中,它就会开始播放这个文件。
怎么让自己的软件也有这个功能呢?
其实,并不是很难,只要让你需要有拖拽功能的控件响应WM_DROPFILES消息就行了。下面以Edit控件和ListBox控件为例子来说明。
首先,从CEdit继承,自定义一个Edit控件。在头文件添加如下的消息响应函数:
afx_msg void OnDropFiles(HDROP hDropInfo);
然后,在cpp文件中的消息映射中添加:
ON_WM_DROPFILES()
最后,在cpp文件中添加OnDropFiles函数的实现,对拖拽的文件进行处理。下面是完整的代码:
// lxEdit.h
class ClxEdit : public CEdit
{
DECLARE_DYNAMIC(ClxEdit)
public:
ClxEdit();
virtual ~ClxEdit();