如何在Visual Basic中实现鼠标拖动?
时间:2020-03-05 18:46:02 来源:igfitidea点击:
我需要在Visual Basic 2005 Express中创建一个Quick-N-dirty旋钮控件,通过用鼠标"抓取"并向上/向下移动光标,可以增加/减小该控件的值。由于旋钮本身不会移动,因此我需要继续跟踪控件矩形外部的鼠标移动。
我使用带有LabList的ImageList来实现此目的(我有127个位图的列表,分别表示旋钮在各个位置)。
我应该对哪些事件作出反应?
解决方案
回答
我们需要该控件来处理三个事件:鼠标按下,鼠标移动和鼠标按下。在Mouse Down事件上,我们将需要捕获鼠标。这意味着鼠标消息将发送到具有捕获的控件。在鼠标移动事件中,如果捕获到输入,则根据鼠标移动的数量更新显示的图像。在鼠标向上事件中,如果捕获了输入,则释放捕获。
布尔型jjnguy建议是不必要的,因为控件的Capture属性是可读的,因此可以确定是否已设置捕获。
回答
问题将是根据鼠标在mouse_move事件中报告的坐标来确定必须显示哪个位图。我们需要执行一些魔术操作才能变换坐标,并想出一个可以用来选择正确图像的值。
听起来并不复杂,只是在数学上经过了反复试验。 Skizz已经向我们展示了如何捕获事件。