ScreenUnlock
 
解锁工作页面的帧缓冲区

语法

Declare Sub ScreenUnlock ( ByVal startline As Integer = -1, ByVal endline As Integer = -1 )

用法

ScreenUnlock [ start_line ] [, end_line ]

参数

startline
可选参数指定要更新的第一个屏幕行。如果省略,则假定顶屏线。
endline
可选参数指定要更新的最后一个屏幕行。如果省略,则假定底线。

说明

ScreenUnlock解锁当前工作页面,假设以前通过调用ScreenLock锁定,并让系统重新定期更新屏幕。当使用start_lineend_line调用时,仅假定这些行之间的屏幕区域已更改,并将更新。

存在一个记忆屏幕锁定状态的内部计数器,因此ScreenUnlock仅对被锁定的屏幕产生影响。尚未锁定ScreenLock的屏幕无法解锁,但是ScreenUnlock仍然会强制更新给定区域或全屏。

调用ScreenUnlock必须与匹配的调用配对ScreenLock.只有第一次调用ScreenLock实际上执行了锁定操作。后续调用ScreenLock只会增加锁定计数器。相反,ScreenUnlock只会将锁定计数器递减,直到达到零为止,才能执行实际的解锁操作。在更改屏幕模式之前,使用ScreenScreenRes将释放所有锁并将锁定计数器设置为零。

所有图形语句在函数调用之前自动锁定屏幕,然后解锁屏幕,因此您不需要使用ScreenLockScreenUnlock显式地执行此操作。当您希望使用ScreenPtr直接访问屏幕(帧缓冲区)时,或者当您希望将多个图形语句组合在一起时,您只需要锁定屏幕,以便它们的效果同时显示在屏幕上,从而避免屏幕更新期间的屏幕闪烁。

警告(Win32,Linux):通过停止处理操作系统事件的线程来锁定屏幕。这意味着屏幕只能在需要重新绘制所需的时间内被锁定,屏幕锁定时不会接收用户的输入。当感应锁定时间变得太长时,优选使用双重缓冲的方法(使用ScreenCopy)。

例子

参见ScreenPtr示例。

方言差异

  • -lang qb 方言中不可用,除非使用别名__Screenunlock引用。

与QB差别

  • 新的FreeBASIC

参考