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

FreeBASIC Screenevent

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

SCREENEVENT 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

システム事象を質問して、検索します。

構文:
declare function ScreenEvent ( byval event as any ptr = 0 ) as long

用法:
result = ScreenEvent( [ event ] )

パラメタ:
event
関数が事象データを格納するためのバッファを指定します。

戻り値:
検索されるべき未決の事象がある場合には、-1 が戻ります。そうでなければ、0 です。

記述:
この関数は、内部の GfxLib 事象(イベント)待ち行列から、最新の利用可能なシステム事象を返します。
「事象(出来事・イベント)」とは、例えば、マウスやキーボードの何かの状況を意味します。

イベントデータ(利用可能なら)は、Event として宣言された指定されたバッファーにコピーされます。
Event のページで、イベント型のリストと、関連する項目の使用方法を確認してください(以下の例も参照してください)。

事象のための質問
関数は、検索されるべき未定の事象があれば -1 を返します。そうでなければ 0 を返します。
event パラメタが 0 に設定される(省略時のデフォルト)なら、ScreenEvent は、イベントデータをコピーできないで、それは内部のイベント待ち行列からそれを待機解除しないでしょう。
この関数を呼ぶ、この方法は、未定の事象が、実際にそれらをとって来ずに、あるかをどうかをチェックするために、役に立ちます。

注意
KEY_PRESS、KEY_RELEASE または KEY_REPEAT イベントを受け取ると、それは、キーボード・バッファをクリアしていません。
イベントを受けたあと、バッファを消去したいならば、手動で消去する必要があります。
Inkey を参照下さい。

例:
注:FreeBASIC 1.08〜 で、SetEnviron を追加しなくても、日本語環境で描画画面が表示されるように改善されました。
' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")

'' いくつかの有用な定義のために、fbgfx.bi を含めます
#include "fbgfx.bi"
#if __FB_LANG__ = "fb"
Using fb '' 定数と構造は、lang fb の FB名前空間に格納されます。
#endif

Dim e As EVENT

ScreenRes 640, 480
Do
    If (ScreenEvent(@e)) Then
        Select Case e.type
        Case EVENT_KEY_PRESS
            If (e.scancode = SC_ESCAPE) Then'' Esc キーを押すと、終了します
                End
            End If
            If (e.ascii > 0) Then
                Print "'" & e.ascii & "'";
            Else
                Print "unknown key";
            End If
            Print " was pressed (scancode " & e.scancode & ")"
        Case EVENT_KEY_RELEASE
            If (e.ascii > 0) Then
                Print "'" & e.ascii & "'";
            Else
                Print "unknown key";
            End If
            Print " was released (scancode " & e.scancode & ")"
        Case EVENT_KEY_REPEAT
            If (e.ascii > 0) Then
                Print "'" & e.ascii & "'";
            Else
                Print "unknown key";
            End If
            Print " is being repeated (scancode " & e.scancode & ")"
        Case EVENT_MOUSE_MOVE
            Print "mouse moved to " & e.x & "," & e.y & " (delta " & e.dx & "," & e.dy & ")"
        Case EVENT_MOUSE_BUTTON_PRESS
            If (e.button = BUTTON_LEFT) Then
                Print "left";
            ElseIf (e.button = BUTTON_RIGHT) Then
                Print "right";
            Else
                Print "middle";
            End If
            Print " button pressed"
        Case EVENT_MOUSE_BUTTON_RELEASE
            If (e.button = BUTTON_LEFT) Then
                Print "left";
            ElseIf (e.button = BUTTON_RIGHT) Then
                Print "right";
            Else
                Print "middle";
            End If
            Print " button released"
        Case EVENT_MOUSE_DOUBLE_CLICK
            If (e.button = BUTTON_LEFT) Then
                Print "left";
            ElseIf (e.button = BUTTON_RIGHT) Then
                Print "right";
            Else
                Print "middle";
            End If
            Print " button double clicked"
        Case EVENT_MOUSE_WHEEL
            Print "mouse wheel moved to position " & e.z
        Case EVENT_MOUSE_ENTER
            Print "mouse moved into program window"
        Case EVENT_MOUSE_EXIT
            Print "mouse moved out of program window"
        Case EVENT_WINDOW_GOT_FOCUS
            Print "program window got focus"
        Case EVENT_WINDOW_LOST_FOCUS
            Print "program window lost focus"
        Case EVENT_WINDOW_CLOSE
            End
        Case EVENT_MOUSE_HWHEEL
            Print "horizontal mouse wheel moved to position " & e.w
        End Select
    End If

    Sleep 1
Loop


プラットホーム差:

方言差:

QBからの違い:

参照:
描画画面関連に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2022-06-07 13:54:18
日本語翻訳:WATANABE Makoto、原文著作者:LilloWiki

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

表示-非営利-継承