在vfp中调用API函数ShowCursor的心得

在某一form模块中需要在无操作时隐藏鼠标指针,而当移动鼠标时又马上恢复显示鼠标指针。于是设计了一个时钟控件来判断和调用ShowCursor(0),在form的mousemove事件中调用ShowCursor(1),在destroy事件中也调用ShowCursor(1)。刚开始运行此form时能正常实现上述需求。但当关闭form后再次运行时,ShowCursor调用却失效了。经仔细分析,发现了原因:

个人估计,大概是因为调用不当导致该函数的内部显示计数器混乱,造成函数失效。因此可以总结为:

 ShowCursor必须成对使用、并使其参数互为反值。即:当调用一次ShowCursor(0)时,必须在适当的动作、事件中调用一次ShowCursor(1)相对应。
 如果仅调用一次ShowCursor(0)或ShowCursor(1),或者重复调用(0)或重复调用ShowCursor(1),均将导致下次调用失效。

上述form模块中ShowCursor(1)即被调用两次以上,一次在mousemove事件(此处将被多次调用),一次在destroy事件。

为此设置了一个全局变量lShow,初始值为1,每次调用ShowCursor时先判断lShow并取其反值,即:

*隐藏时:

if lShow=1 then

lShow=0

ShowCursor(lShow)

endif

*显示时:

if lShow=0 then

lShow=1

ShowCursor(lShow)

endif

改进后终于正常。遇到此类问题者可参考一下。

 

附:百度对该函数的解释如下:

ShowCursor函数功能:该函数显示或隐藏光标。

函数原型:int ShowCursor(BOOL bShow);

参数:

bShow:确定内部的显示计数器是增加还是减少,如果bShow为TRUE,则显示计数器增加1,如果bShow为FALSE,则计数器减1。

返回值:返回值规定新的显示计数器。

备注:该函数设置了一个内部显示计数器以确定光标是否显示,仅当显示计数器的值大于或等于0时,光标才显示,如果安装了鼠标,则显示计数的初始值为0。如果没有安装鼠标,显示计数是-1。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值