热情软件屋

 

如何实现大十字光标


编号: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++的编辑器设计自己的图标作为鼠标的光标。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio