FreeBASIC マニュアルのトップに戻る

FreeBASIC Screenunlock

目次→描画ライブラリー参考→描画画面関連SCREENUNLOCK←オリジナル・サイト

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 は、ロックされている画面だけに影響を与えます。
Screenunlock でロックされていない画面のロックを解除することはできません。しかし、Screenunlock は、特定の領域か全画面の更新を強要します。

Screenunlock の呼び出しは、対応する Screenlock の呼び出しと、対にしなければなりません。
最初の Screenlock の呼び出しだけが、実際にロック作業を実行します。
その後の Screenlock の呼び出しは、カウンタを増加させるだけです。
逆に、Screenunlock は、ロック・カウンタがゼロに達するまでは、カウンタを減少させるだけです。ロック・カウンタがゼロに達すると、実際のロック解除が実行されます。
Screen (描画)Screenres を使うと、画面モードを変更する前に、すべてのロックが解除されて、ロック・カウンタはゼロに戻されます。

すべての描画命令文は、自動的に関数呼び出しの前に画面をロックします。その後、画面のロックを解除するので、明示的に ScreenlockScreenunlock を使う必要はありません。
明示的に画面をロックする必要があるのは、Screenptr を使って、直接、画面(framebuffer)にアクセスしたいときか、あるいは、描画命令文の影響が同時に画面に現れるように、いくつかの描画命令文を集めたいときだけです。こうして、画面更新の間、画面のちらつきの可能性を回避します。

警告(Win32、Linux):
画面は、OS のイベントを処理するスレッドを止めることによって、また、ロックされます。
これは、画面が、画面を描き直すために必要な短い時間の間に限って、ロックすべきことを、意味します。画面がロックされている間は、ユーザー入力は受け取られません。
誘導されたロック時間があまりに長くなるときは、ダブル・バファリング(Screencopy で)の方法を使うことを推奨します。

例:
Screenptr の例を見てください。

方言差:

QBからの違い:

参照:
描画画面関連に戻る
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2023-07-09 01:02:09
日本語翻訳:WATANABE Makoto、原文著作者:SysOp

ホームページのトップに戻る

表示-非営利-継承