CDragListBox 类
除提供 Windows 列表框功能外,CDragListBox
类还允许用户在列表框内移动文件名等列表框项。
语法
class CDragListBox : public CListBox
成员
公共构造函数
名称 | 描述 |
---|---|
CDragListBox::CDragListBox | 构造 CDragListBox 对象。 |
公共方法
名称 | 描述 |
---|---|
CDragListBox::BeginDrag | 在拖动操作开始时由框架调用。 |
CDragListBox::CancelDrag | 在取消拖动操作后由框架调用。 |
CDragListBox::Dragging | 在拖动操作执行期间由框架调用。 |
CDragListBox::DrawInsert | 绘制拖动列表框的插入指针。 |
CDragListBox::Dropped | 删除项后由框架调用。 |
CDragListBox::ItemFromPt | 返回要拖动的项的坐标。 |
注解
包含此功能的列表框允许用户以最有用的方式对列表中的项排序。 默认情况下,列表框会将该项移动到列表中的新位置。 但是,可以自定义 CDragListBox
对象来复制项,而不移动它们。
与 CDragListBox
类关联的列表框控件不得有 LBS_SORT 或 LBS_MULTIPLESELECT 样式。 有关列表框样式的说明,请参阅列表框样式。
若要在应用程序的现有对话框中使用拖动列表框,请使用对话框编辑器将列表框控件添加到对话框模板,然后分配一个对应于对话框模板中的列表框控件的成员变量(“类别”为 Control
,“变量类型”为 CDragListBox
)。
若要详细了解如何将控件分配给成员变量,请参阅用于定义对话框控件的成员变量的快捷方式。
继承层次结构
CDragListBox
要求
标头: afxcmn.h
CDragListBox::BeginDrag
当发生可能启动拖动操作的事件(例如按鼠标左键)时由框架调用。
virtual BOOL BeginDrag(CPoint pt);
参数
pt
一个 CPoint 对象,其中包含要拖动的项的坐标。
返回值
如果允许拖动,则为非零值,否则为 0。
备注
如果要控制拖动操作开始时发生的情况,请重写此函数。 默认实现会捕获鼠标,并会一直处于拖动模式,直到用户单击左或右鼠标按钮或按 ESC,此时拖动操作会被取消。
CDragListBox::CancelDrag
在取消拖动操作后由框架调用。
virtual void CancelDrag(CPoint pt);
参数
pt
一个 CPoint 对象,其中包含要拖动的项的坐标。
注解
重写此函数以应对针对列表框控件进行的任何特殊处理。
CDragListBox::CDragListBox
构造 CDragListBox
对象。
CDragListBox();
CDragListBox::Dragging
在 CDragListBox
对象中拖动列表框项时由框架调用。
virtual UINT Dragging(CPoint pt);
参数
pt
一个 CPoint 对象,其中包含光标的 x 和 y 屏幕坐标。
返回值
要显示的光标的资源 ID。 可能的值如下:
DL_COPYCURSOR 指示将复制该项。
DL_MOVECURSOR 指示将移动该项。
DL_STOPCURSOR 指示当前删除目标不可接受。
注解
默认行为返回 DL_MOVECURSOR。 如果要提供其他功能,请重写此函数。
CDragListBox::DrawInsert
由框架调用,以在带有指示的索引的项前绘制插入指针。
virtual void DrawInsert(int nItem);
参数
nItem
插入点的从零开始的索引。
备注
值为 - 1 会清除插入指针。 重写此函数以修改插入指针的外观或行为。
CDragListBox::Dropped
在 CDragListBox
对象中删除项时由框架调用。
virtual void Dropped(
int nSrcIndex,
CPoint pt);
参数
nSrcIndex
指定已删除字符串的从零开始的索引。
pt
一个 CPoint 对象,其中包含放置站点的坐标。
注解
默认行为将列表框项及其数据复制到新位置,然后删除原始项。 重写此函数以自定义默认行为,例如,允许将列表框项的副本拖动到列表中的其他位置。
CDragListBox::ItemFromPt
调用此函数以检索位于 pt 的列表框项的从零开始的索引。
int ItemFromPt(
CPoint pt,
BOOL bAutoScroll = TRUE) const;
参数
pt
一个 CPoint 对象,其中包含列表框中的某个点的坐标。
bAutoScroll
如果允许滚动,则为非零值;否则为 0。
返回值
拖动列表框项的从零开始的索引。