百度首页 | 百度空间
 
查看文章
 
让控件显示手型鼠标
2008-06-19 15:50

夜闻香原创,转载请保留此信息,万分感谢!
博客: http://hi.baidu.com/clso
论坛: http://clso.xuntan.com
QQ:315514678 E-mail:clso@yahoo.cn
欢迎技术交流!

注意哦,我这里说的手型鼠标是系统的鼠标风格内的手型鼠标,而非将某个鼠标文件打包再显示的哦。
在以前的VB6中,不支持控件的手型鼠标。本以为到了VB.NET了,总该支持了吧?啊呸,还是老毛病!
虽然这种BUG可以通过将某个图标文件加入程序来解决,但如果用户的鼠标主体不同,或者图标的色彩是32位时,就会显示出这种方法的弊端了。

下面,我来教大家如何手动设置控件的“用户系统鼠标主题内的手型鼠标”!!!
如图:


首先新建一个窗体,双击窗体,在窗体的Load事件中加入下面的代码:
    Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Cursor = New Cursor(New IntPtr(45))
    End Sub

没错,就是这么简单!!!
在WINDOWS系统中,系统当前主题的手型鼠标的图标指针句柄为45,所以我们创建一个新的鼠标指针类型,由于其构造函数需要传递一个句柄类型,我们在新句柄的构造函数中直接传递它的句柄45,然后将本窗体的Cursor属性设置为我们这个新的鼠标指针。

如果你想要让自己的某一个控件的指针为手型,那么只要设置这个控件的Cursor属性就可以了,比如我想让我的窗体中的按钮1和按钮2的指针为手型,代码如下:
    Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim c As New Cursor(New IntPtr(45))
        Me.Button1.Cursor = c
        Me.Button2.Cursor = c
    End Sub

真实太容易了!!!

那么,我又该如何将一个资源图标设置为我的窗体的鼠标指针呢?
说实话,这比较复杂。WINXP中支持32位高色彩的鼠标指针,然而在.NET程序中,却不支这么高位的色彩。因此,想要载入32位色彩的鼠标指针,我们需要使用系统的API来我们完成这个过程。
想要从cur或者ico文件中直接加载,请使用LoadCursorFromFile函数。这个函数的VB.NET定义如下:
Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As IntPtr

我们将这个API函数添加到窗体的空白区域,然后在窗体的Load时间中加入如下代码:
    Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ip As IntPtr = LoadCursorFromFile("D:\WINDOWS\Cursors\blue B\15.cur") '这里的文件路径请自行设置
        If ip = IntPtr.Zero Then Return '如果指针载入不成功则退出过程
        Dim c As New Cursor(ip) '将指针句柄赋予给新的鼠标指针类型
        Me.Cursor = c
    End Sub

效果如下:


善于结合系统而使用.NET程序,这才是最高境界~~~



类别:vb代码 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu