Skip to content

SCREENUNLOCK


解锁工作页面的帧缓冲区

语法

` declare sub Screenunlock ( byval startline as long = -1, byval endline as long = -1 )

`

用法

` Screenunlock [ start_line ] [, end_line ]

`

参数

startline

可选参数,指定要更新的第一个屏幕行。若省略,则默认为屏幕顶行。

endline

可选参数,指定要更新的最后一个屏幕行。若省略,则默认为屏幕底行。

说明

Screenunlock 解锁当前工作页面(假定之前已通过调用 Screenlock 锁定),并让系统恢复定期更新屏幕。当指定 start_lineend_line 时,仅认为这两行之间的屏幕区域发生了变化,并对该区域进行更新。

内部存在一个计数器用于记录屏幕锁定状态,因此 Screenunlock 只对已锁定的屏幕有效。未通过 Screenlock 锁定的屏幕无法被解锁,但 Screenunlock 仍会强制更新指定区域或整个屏幕。

Screenunlock 的调用必须与 Screenlock 的调用配对使用。只有第一次调用 Screenlock 才会真正执行锁定操作,后续调用 Screenlock 只会递增锁定计数器。相反,Screenunlock 只会递减锁定计数器,直到计数归零时才执行实际的解锁操作。使用 Screen(图形)Screenres 将在切换屏幕模式前释放所有锁并将锁定计数器重置为零。

所有图形语句在调用前会自动锁定屏幕,调用结束后自动解锁,因此通常无需使用 ScreenlockScreenunlock 显式操作。只有在希望直接通过 Screenptr 访问屏幕(帧缓冲区),或希望将多个图形语句合并以使其效果同时显示在屏幕上(从而避免屏幕更新期间可能出现的闪烁)时,才需要锁定屏幕。

警告(Win32、Linux):屏幕锁定通过停止同时处理操作系统事件的线程来实现。这意味着屏幕锁定时间应尽量短,仅限于重绘所需的时间,且在屏幕锁定期间不会接收用户输入。当强制锁定时间过长时,建议优先使用双缓冲方法(配合 Screencopy)。

示例

参见 Screenptr 示例。

方言差异

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

与 QB 的差异

  • FreeBASIC 新增内容。

另请参阅

  • Screen(图形)
  • Screenlock
  • Screenptr

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系