如何实现大十字光标
编号:QA003526
建立日期: 2000年11月9日 最后修改日期:2000年11月9日
所属类别:
liusigui:
我是个刚大学毕业的学生,平时喜欢VB方面的知识,经常找些代码在自己的机子上调试调试,最近我在网上下载到一个大十字光标的编程方面的文章,现在我碰到的问题是:当我在Form1中的label1控件(单击)调用Form2时,如这时返回Form1时,十字光标没有消失。给整个界面带来了很不好的效果(采用VB6.0)。具体过程如下:
首先新建一个工程,在Form1的属性栏中的picture中直接加入图象,而不要添加什么图形控件,然后在Form1中加入如下代码:
Option Explicit
Dim Old_X As Single
Dim Old_Y As Single
Dim CrossColor As Long
Private Sub Form_Load()
CrossColor = RGB(255, 255, 255)
Form1.DrawMode = 7
Form1.MousePointer = vbCustom
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'消除旧光标线
Form1.Line (0, Old_Y)-(Form1.ScaleWidth, Old_Y), CrossColor
Form1.Line (Old_X, 0)-(Old_X, Form1.ScaleHeight), CrossColor
'画新的光标线
Form1.Line (0, Y)-(Form1.ScaleWidth, Y), CrossColor
Form1.Line (X, 0)-(X, Form1.ScaleHeight), CrossColor
Old_X = X
Old_Y = Y
End Sub
到此为止,十字光标就可以出来了,效果还不错,可是如果要调用其它表单的话,就不行了。这时你可以添加一个Form2,在这个表单中什么代码也不要,只需在Form1中添置一个标签控件,然后在标签中添加如下代码:
Private Sub Label1_Click()
Form2.Show
End Sub
运行,单击label1控件,你就会发现问题,就是退出Form2时,原来的光标不能在那个位置消失。这就是我所碰到的问题,而我要实机的功能是返回后还是个十字光标,原图不能改变。我不知道这样的表达是否清楚,VB专家,真诚希望您在百忙之中,望能抽出点时间帮助一位在VB路中黑暗摸索的一位想追求进步的学子。
回答:
你可以下载
10005.zip,将其中的.cur释放出来。然后指定Form1的MouseIcon为这个文件,设置MousePointer为99。这样当光标移动到Form1上就会变为十字形。如果你不满意这个光标,也可以使用图标工具(QA000926 "用什么软件可创建、编辑图标")或VC++的编辑器设计自己的图标作为鼠标的光标。
此问题由李海回答。
| |
|
|
| |
|
|