永发信息网

怎么样在VB中隐藏鼠标?

答案:6  悬赏:20  手机版
解决时间 2021-02-10 12:06
谢谢1楼的回复,但是那样退出也不会把鼠标显示出来。我的鼠标丢了!
最佳答案
Windows中的API函数ShowCursor提供了一种简单的隐藏鼠标的办法。
ShowCursor的申明如下:
Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
当你让bShow为0的时候,鼠标指针消失,让bShow为-1的时候鼠标指针会重新出现,下面这段代码可以让大62616964757a686964616fe58685e5aeb931333166326266家看看效果:
  在新建的Form代码中输入如下代码:
Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
Dim blnShow As Boolean
Private Sub Form_Click()
  blnShow = Not blnShow
  ShowCursor blnShow
End Sub
Private Sub Form_Load()
  blnShow = True
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
ShowCursor True
End Sub
全部回答
关注一下哈哈
在工控制软件中,实时曲线的绘制用途非常的广泛,它可以很直观的显示出监控数据的变化值和变化趋势。在vb中实现曲线的绘制有很多种方法,本文介绍一种非常简单的方法来实现实时曲线的绘制。 在vb中实现实时曲线的绘制,要利用vb的picturebox(图像)控件,和画线函数line(x1,y1)-(x2,y2)。picturebox控件,可以作为一个“容器”,在它的里面可以包含很多的对象。也可以执行很多vb的内部函数。 要实现实时曲线的绘制,肯定要有外部实时数据的输入,这里假设是有一个数据从计算机的串口输入 定义该数据变量为datafromcom。实时曲线反映的就是该数据。 打开vb6.0中文版,新建一个项目和窗体,修改窗体的属性,将“heigh”修改为:8000,“width”修改为在窗体中放如一个picturebox控件。然后重新定义picturebox控件的一些基本属性,在vb中选中picturebox控件,直接在它的属性框中,修改一些属性参数。“名称”改为pic。 “autoredraw”改为:true。“backcolor”改为:&h00004000&(墨绿色背景颜色)。”heigh”改为:5000。“width”改为:8000。如图1所示: 然后要重新定义picturebox控件的坐标系。图像框的默认坐标系,是从左上角开始的,不符合我们的画线要求。修改坐标系的目的是让曲线从图像框的左边正中间,开始画线。修改图像框的坐标系,这里定义一个过程picscale(),代码如下: private sub picscale(picx as picturebox) picx.scale (0, picx.scaleheight)-(picx.scalewidth, -picx.scaleheight) end sub 一般的实时曲线显示的时候在屏幕的正中间有一条基准线,这里也要画出这条基准线,用一个过程picmidleline()来实现,代码如下: private sub picmidleline( picx as picturebox) picx.line (0, 0)-(picx.scalewidth, 0), vbgreen '画出中线 end sub 要画一条实时曲线,坐标轴的设定很重要,在这里把x轴设定为时间轴,y轴设定为数据轴。对应x轴我们定义一个时间变量timecount,timecount会随着时间逐渐递增,每次递增,对应着一个从串口读过来的数据datafromcom,这样图像框中的(x,y)坐标点实际上就对应着(timecount,datafromcom)如果只是当timecount发生变化时就在图像框上画一个点,就只需调用vb中的画像素的函数point(x,y),这里x,y为所画的点的坐标。单这样画出来的是一个个不连续的点。我们想要的是实时的连续的曲线,所以要调用vb中的画线的函数line(x1,y1)-(x2,y2),这里(x1,y1)(x2,y2)为所要画的线的起点和终点的坐标。只要把上次串口读过来的数据(这里把它定义为变量datafromcomlast)和现在串口读过来的数据(datafromcom)和timecount相对应,调用line(x1,y1)-(x2,y2)函数就可以在图像框中画出实时的曲线了。把它写成一个过程如下面的代码: private sub drawrealline(picx as picturebox, timecountx as integer, datafromcomx as integer, datafromcomlastx as integer) if timecountx - 1 > 0 then picx.line (timecountx - 1, datafromcomlastx)-(timecountx, datafromcomx), vbwhite end if end sub 有了三个过程就可以在图像框中画出一条实时的曲线了。 drawrealline()过程中的picx.line (timecountx - 1, datafromcomlastx)-(timecountx, datafromcomx), vbwhite所画线的起始点和结束点都是以像素为单位的,这样以来如果不改变的话,画出来的线将是一个屏幕上像素相连的很密的曲线,通过调整line(x1,y1)-(x2,y2) 中的x的值,就可以画出分布密度不一样的曲线,这里为了在屏幕上能够看到不是很密的曲线我们把x乘以一个系数10,修改为: picx.line ((timecountx - 1) * 10, datafromcomlastx)-(timecountx * 10, datafromcomx), vbwhite 这比较容易在屏幕上看到稀疏的曲线。 由于是仅仅讲解如何画出实时的曲线,读者的计算机上未必有和串口相连的设备,这里用一个定时器控件来模拟从串口读过来的数据。在窗体上放入一个timer控件,修改timer控件的属性为:“enable”该为true,“interval”改为300。双击timer控件在它的过程中,添加代码后如下: private sub timer1_timer() datafromcomlast = datafromcom randomize datafromcom = 3000 * rnd timecount = timecount + 1 drawrealline pic, timecount, datafromcom, datafromcomlast end sub 这样在运行后就可以看到我们想要的实时曲线了,如下图: 图 2 下面是完整的代码: option explicit dim datafromcom as integer '从串口读过来的实时值 dim datafromcomlast as integer '上次的串口值 dim timecount as integer private sub form_load() picscale pic '调整图像框的坐标系 picmidleline pic '在图像框中画一条中线 end sub private sub picscale(picx as picturebox) '调整图像框的坐标系 picx.scale (0, picx.scaleheight)-(picx.scalewidth, -picx.scaleheight) end sub private sub picmidleline(picx as picturebox) '在图像框中画一条中线 picx.line (0, 0)-(picx.scalewidth, 0), vbgreen '画出中线 end sub private sub drawrealline(picx as picturebox, timecountx as integer, datafromcomx as integer, datafromcomlastx as integer) if timecountx - 1 > 0 then picx.line ((timecountx - 1) * 10, datafromcomlastx)-(timecountx * 10, datafromcomx), vbwhite end if end sub private sub timer1_timer() datafromcomlast = datafromcom randomize datafromcom = 3000 * rnd timecount = timecount + 1 drawrealline pic, timecount, datafromcom, datafromcomlast '画出实时的曲线 end sub 在vb中绘制实时曲线是比较难的,一般要应用第三方控件或是windows api函数来完成,但是如果你对实时曲线的要求不是很高,只要能表示出当前的一般情况的话,我们可以直接应用vb提供给我们的空间来完成. 原则上讲,直接在form里绘制曲线都是可以的,msdn上面很多例程就是直接在form里面绘制图形的,form作为绘制图形的容器,不过一般应用中form中不可避免的会有很多其他控件,所以我们选择picturebox作为绘制曲线的容器. 实时曲线的绘制一般借助于timer控件来完成,使用timer控件,定期将串口或是其他仪器中监测到的数据送往picturebox1,而曲线的绘制一般画成折线图,采用picturebox1的line方法绘制.具体实现如下: 1.选择需要显示的窗体picture1,加入图片框picture1,根据实际需要设置图片的大小并移到合适的位置,并在图片的外面画好量程----时间坐标系;然后加上timer控件以及两个commandbutton,界面就基本设置好了. 2.建立坐标系,根据picture1的大小和高度设置画出坐标系的x轴和y轴: picture1 .scalemode = 1 ‘以vb的基本单位作为建立坐标轴以及绘制图形的单位; picture1.refresh picture1.currentx = picture1.scaleleft +100 picture1.currenty = picture1.scaletop picture1.print picture1.scaleheight - 100 picture1.line(picture1.scaleleft+100,picture1.scaletop+100)-(picture1.scaleleft+100, picture1.scaleheight - 100) picture1.currentx = picture1.scaleleft +100 picture1.currenty = picture1.scaleheight picture1.print “(0,0)” picture1.line (picture1.scaleleft + 100, picture1.scaleheight - 100)-(picture1.scalewidth - 100, picture1.scaleheight - 100) picture1.currentx = picture1.scalewidth picture1.currenty = picture1.scaleheight picture1.print picture1.scalewidth-100 picture1.autoredraw = true ‘必要时,用存储在内存中的图象进行重绘 3.绘制曲线并保存,我们这里以正弦曲线作为绘制曲线的数据来源,具体应用是可以采用由串口或其他仪器采集得到的数据.首先我们绘制一条中线,然后在timer控件的time事件中绘制曲线: picture1.line (picture1.scaleleft, cint(picture1.scaleheight / 2))-(picture1.scalewidth, cint(picture1.scaleheight / 2)) ‘绘制中线 private sub timer1_timer() dim y1 as integer y1 = cint(sin((x - picture1.left) / 20 / 180 * pi) * picture1.scaleheight / 2) y1 = cint((picture1.scaleheight + 1000) / 2) - y1 picture1.line (x, y)-(x + 20, y1) x = x + 20 y = y1 if x >= picture1.scalewidth then savepicture picture1.image, "c:\sin.bmp" ‘保存图画,
1.把鼠标移动到屏幕最右侧 2.把鼠标砸了
就是用showcursor这个2113api,不过要注意: windows维持着一个内部显示计数;倘若bShow为TRUE,那5261么每调用一次这个函4102数,计数就会递增1;反之,如bShow为FALSE,则计数递1653减1。只有在这个计数大于回或等于0的情况下,指针才答会显示出来
你在程序退出的时候在调用ShowCursor(TRUE)显示不就行了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
珍爱美甲地址在什么地方,想过去办事
数学题 卖出1000张票,得到6950元筹得票款6950
中国一元硬币最早的是哪一年
鹿晗爸妈是干什么的
家里用的电脑有必要设置开机密码吗
朝阳区苹果维修网点,苹果手机充不进去电怎么
下列运河或海峡,属于大洲分界线的是①苏伊士
猫三岁(猫三岁)地址好找么,我有些事要过去
安徒生童话the nightingale读后感英语
【米氏方程】试述米氏方程和米氏常数Km的意义
兴昌路/昌金路(路口)在什么地方啊,我要过去
顺丰快递 上海发北京 走陆运需要几天? 上图
欲擒故纵的结果,大家帮我分析一下。
静电有味道吗?为什么我脱毛衣的时候会闻到静
指秀美容美甲地址在什么地方,我要处理点事
推荐资讯
陕县国土资源局宫前执法监察中队我想知道这个
天竺美容美发地址在哪,我要去那里办事
全民k歌中的推送某某人为你唱的专属好歌是单
描写蘑菇的句子有哪些
Q版风格的文案怎么写?
裤脚口款式小脚和直筒有什么区别??
孙都勒在哪里啊,我有事要去这个地方
5000乘百分之几等于100
网吧一键还原后 还原的是什么盘?除了C盘外
宣化钢铁公司实业发展总公司汽车修理厂地址在
云阳堡停车区停车场地址有知道的么?有点事想
小野大辅的BL Drama(小野大辅为受方),最好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?