让ListBox控件支持拖动
通常我们通过ListBox控件来显示我们的信息列表,然后我们可以通过鼠标来选择我们的条目信息,但VC中的ListBox控件是不支持拖动的。也许我们有时需要改变我们的列表顺序,已适应我们的要求,下面是实现的方法。
设计思路:
1. 如果通过鼠标左键选中某一条目并拖动,此时我们通过变量记录当前选中条目的位置和条目字符串以及此条目的副值。
2. 鼠标移动到要移动到的位置后放开左键,此时我们把以前选中的条目插入到此处,同时,删掉原位置的条目。
实现步骤:
1. 定义一个从ClistBox类扩展的类CMyListBox,代码下面分析。
2. 通过新类定义我们的列表控件变量。
代码分析:
// MyListBox.h : header file
//
// CMyListBox window
class CMyListBox : public CListBox
{
// Construction
public:
CMyListBox();
// Attributes
private:
BOOL m_LButtonDownFlag;
BOOL m_MouseMoveFlag;
int m_OldPosition;
int m_NewPosition;
CString m_DragString;
DWORD m_ItemData;
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
file://{{AFX_VIRTUAL(CMyListBox)
file://}}AFX_VIRTUAL
// Implementation
public:
virtual ~CMyListBox();
// Generated message map functions
- 上一篇:VC中利用ADO共同实现数据库的操作
- 下一篇:VC下实现定时任务的方法讨论