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

FreeBASIC Getmouse

目次→描画ライブラリー参考→ユーザ入力関連GETMOUSE←オリジナル・サイト

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

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

マウス・ポインティング装置の状態を検索します。

構文:
declare function Getmouse ( byref x as long, byref y as long, byref wheel as long = 0, byref buttons as long = 0, byref clip as long = 0 ) as long
declare function Getmouse ( byref x as longint, byref y as longint, byref wheel as longint = 0, byref buttons as longint = 0, byref clip as longint = 0 ) as long

用法:
result = Getmouse (x, y [, [ wheel ] [, [ buttons ] [, [ clip ]]]])

パラメタ:
x
x座標値
y
y座標値
wheel
ホイールを回した値
buttons
ボタンの状態
clip
クリップの状態

戻り値:
0 on success, or 1 on error (for example because the mouse is outside the graphic window) or on failure. (sets a runtime error)
成功の場合は 0 、失敗のときは 1(エラー処理)

記述:
Getmouse は、マウスの位置と、ボタンの状態を検索します。
情報は、参考で、この関数にわたされた変数を通して、返されます。
マウスが使えない場合は、すべての変数の値は、-1 になります。

実行画面モードで、x , y 座標は、そのときマウスが乗っている位置の、文字セルの座標を示します;
画面の左上隅は、座標 0, 0 になります。
マウスが、実行画面から外に出て行くと、Getmouse は、マウスがいた画面の、最後の座標を返します。
実行画面モードか全画面にあるなら、スクロール・ホイール値は、返されません。

描画モードでは、xy は、画面の左上隅を起点にした画素座標を返します。画面の左上隅の場合は、0,0 です。
ViewWindow で設定されるカスタム座標系は、Getmouse によって返される座標に影響しません。
マウスが描画ウインドウから外に出ると、すべての値は -1 になります。そして、関数の戻り値は 1 に設定されます。
また、関数の戻り値がテストされないならば、これはボタンと車輪のために事実と異なる解釈を与える場合があります。

Wheel は、マウス・ホイール・カウンタです。
ホイールを、向こうに押し出すように回転させると、カウントは増加します。手前に向かってホイールを回転させると、カウントは減少します。
プログラムが開始するとき、または、新しい描画モードが Screen (描画) で設定されるとき、ホイール位置は 0 にリセットされます。
FreeBASICは、全てのプラットホームで、マウス・ホイールをサポートするわけではありません。サポートされない場合、常に 0 を返します。

Buttons は、ビットマスクとしてボタンの状態を格納します:
マウス左ボタンが押されていると、ビット 0 が設定されます。
マウス右ボタンが押されていると、ビット 1 が設定されます。
マウス中央ボタン/ホイールが押されていると、ビット 2 が設定されます。

Clip は、マウス切り取り状態を格納します。
マウスが、描画ウィンドウを切り取ったとき、1 になります。
0 なら、マウスは切り取っていません。

Getmouse が返すエラーコードは、次の行で Err を使って確認できます。 関数バージョンの Getmouse はエラーコードを直接 32 bit Long で返します。

警告: フラグ GFX_SHAPED_WINDOW が設定(Screenres を参照)されているとき、Getmouse は色付き領域、つまり color <> RGBA(255, 0, 255, alpha) の部分でのみ有効です。

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

Dim As Long x, y, buttons, res

'ビデオモードを設定します。そして、Do 繰り返しを入れます。

ScreenRes 640, 480, 8

Do
    'マウスのx,y 座標と、ボタンの状況を取得します。ホイール位置は捨てます。

    res = GetMouse (x, y, , buttons)
    Locate 1, 1
    If res <> 0 Then '' Failure

# IFDEF __FB_DOS__
        Print "Mouse or mouse driver not available"
# ELSE
        Print "Mouse not available or not on window"
# ENDIF

    Else
        Print Using "Mouse position: ### :###  Buttons: "; x; y;
        If buttons And 1 Then Print "L";
        If buttons And 2 Then Print "R";
        If buttons And 4 Then Print "M";
        Print "   "
    End If
Loop While Inkey = "" '何かキー入力すると、繰り返しを抜けます。
End


'例 2: type-union-type structure タイプ・ユニオン・タイプ構造

' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")

Type mouse
    As Long res
    As Long x, y, wheel, clip
    Union
        buttons As Long
        Type
            Left:1 As Long
            Right:1 As Long
            middle:1 As Long
        End Type
    End Union
End Type

Screen 11
Dim As mouse m

Do
    m.res = GetMouse ( m.x, m.y, m.wheel, m.buttons, m.clip )
    ScreenLock
    Cls
    Print Using "res = #"; m.res
    Print Using "x = ###; y = ###; wheel = +###; clip = ##"; m.x; m.y; m.wheel; m.clip
    Print Using "buttons = ##; left = #; middle = #; right = #"; m.buttons; m.left; m.middle; m.right
    ScreenUnlock
    Sleep 10, 1

Loop While Inkey = ""



方言差:

プラットホーム差:

QBからの違い:

参照:

ユーザ入力関連に戻る
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2023-07-09 00:16:56
日本語翻訳:WATANABE Makoto、原文著作者:SysOp

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

表示-非営利-継承