我需要在 Visual Basic 2005 Express 中创建一个 quick-n-dirty 旋钮控件,其值通过用鼠标“抓住”它并向上/向下移动光标来增加/减少。因为旋钮本身没有移动,所以我需要继续跟踪控件矩形之外的鼠标移动。
我使用 aLabel
来ImageList
实现这一点(我有一个 127 个位图的列表,代表不同位置的旋钮)。
我应该对哪些事件做出反应?
我需要在 Visual Basic 2005 Express 中创建一个 quick-n-dirty 旋钮控件,其值通过用鼠标“抓住”它并向上/向下移动光标来增加/减少。因为旋钮本身没有移动,所以我需要继续跟踪控件矩形之外的鼠标移动。
我使用 aLabel
来ImageList
实现这一点(我有一个 127 个位图的列表,代表不同位置的旋钮)。
我应该对哪些事件做出反应?
您需要控件来处理三个事件:Mouse Down、Mouse Move 和 Mouse Up。在 Mouse Down 事件中,您需要捕获鼠标。这意味着鼠标消息被发送到具有捕获的控件。在鼠标移动事件中,如果输入被捕获,则根据鼠标移动的量更新显示的图像。在鼠标向上事件中,如果输入被捕获,则释放捕获。
布尔 jjnguy 建议是不必要的,因为 Control 的 Capture 属性是可读的,因此可以确定是否已设置捕获。
您的问题将是根据鼠标在 mouse_move 事件中报告的坐标来确定必须显示的位图。您需要执行一些魔法来转换坐标并得出一个可用于选择正确图像的值。
这听起来并不复杂,只是在数学上进行了一些尝试和错误。Skizz 已经向您展示了如何捕捉事件。