一、由于MFC List Control自身没有拖拽的功能,所以首先我们自己添加一个继承CListCtrl类的CDragListCtrl类,用于重写拖拽功能。
二、使用成员变量向导添加一个CDragListCtrl的成员变量m_DragList,在Dlg类中设置List Control的一些属性和添加内容。
三、List Control的一些基本设置完成后,我们开始在CDragListCtrl类中编写相应的拖拽功能:
1、在CDragListCtrl类中添加三个私有成员变量(公有变量也可以,想到只有本类自己使用,就添加成私有的)
private:
int m_nSelItem; //被拖拽的Item index
CImageList *m_pDragImageList; //图像列表指针
BOOL m_bDragging; //正在拖拽标志
在类构造函数跟析构函数对添加的变量赋初值和解放内容等。
2、分别重写CDragListCtrl类的三个消息
四、完成上边的三步后我们已经完成了拖拽的功能,并且在OnLButtonUp的重写中,我们已经把选中的项目内容显示到了主窗口的某个上边。下边有个小技巧可以把我们所选中的内容在Edit控件中垂直居中显示。此功能需要把Edit控件中的Multiline设置为TRUE。