イメージ表示範囲から外れた時にカーソルが元に戻るようにするには。

[戻る]
みにこ 2002/09/06(金) 10:10:14
はじめまして。
WIN98のVB6.0を使用しています。

Private Sub LEAD1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y 
As Single)

    If pDown = True Then
        LEAD1.DstTop = LEAD1.DstTop + (Y - pDown_y) / 50
        LEAD1.DstLeft = LEAD1.DstLeft + (X - pDown_x) / 50
        
        LEAD1.DstClipTop = LEAD1.DstTop
        LEAD1.DstClipLeft = LEAD1.DstLeft
    End If

End Sub

こんな感じでイメージ上でのマウスムーブ=マウス移植値により画像の表示領域を変更
を設定したのですが、このままではイメージ上からカーソルが外れた時も(ドラッグ状態で)
カーソルの形がイメージを動かすもの(手のマーク)のままなんですね。
どうしたら元のマークに戻るようになるんでしょうか、どなたかアドバイスください。

べーちゃん 2002/09/06(金) 10:24:16
こんにちはみにこさん、べーちゃんといいます。

肝心のカーソルを設定しているルーチンや、
どんなときにカーソルを変化させ、どんなときに戻すか
についてはどうなっているのですか。

みにこ 2002/09/06(金) 11:07:34
べーちゃんさん、とっても早いお返事どうもありがとうございます。
説明不足ですみませんでした。
カーソルはマウスダウンイベントで、こんな風に変わるようになっています。

Private Sub LEAD1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y 
As Single)
    
    If pLoadImgName = "" Then
        Exit Sub
    End If
    
    LEAD1.MousePointer = 99
    pDown_x = X
    pDown_y = Y
    pDown = True

End Sub

そして次のマウスアップイベントで、元に戻るようになっています。

Private Sub LEAD1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y 
As Single)

    LEAD1.MousePointer = 0
    pDown = False

End Sub

なので、カーソルを元に戻すには、マウスアップするしかない状態なんです。

べーちゃん 2002/09/07(土) 07:57:46
こんにちはみにこさん。

まず、このプログラムでは市販のコントロールを使われているのですね?
確認したいのですが
マウスの左ボタンをイメージの領域で押した時にカーソルは変わるのですね?
そのままマウスの左ボタンを押したままイメージ領域外にカーソルを
移動(ドラッグ)させてもカーソルは変わったままですよね。
その後マウスの左ボタンを離したらカーソルはデフォルトに戻りますよね。

以上の動作には問題ないですよね。
もし上記の通り動作しない場合、コントロールについて調べてみる必要が
あると考えられます。

おそらく最初の文面から行くとドラッグ中でもイメージ領域から外れると
マウスカーソルを戻したいといことですよね。
もしそうであれば

MouseMoveイベントのIf - End Ifの間に

If 0 <= Y And Y <= LEAD1.Height And 0 <= X And X <= LEAD1.Width Then
    LEAD1.MousePointer = vbCustom
Else
    LEAD1.MousePointer = vbDefault
End If

をいれてみたらどうですか?
確認はVB6標準のイメージコントロールで行っているため、市販の
コントロールだとプロパティや動作が異なる部分もあるかもしれません。

みにこ 2002/09/11(水) 09:02:43
[[解決]]
ありがとうございます!ちゃんと動くようになりました。

>マウスの左ボタンをイメージの領域で押した時にカーソルは変わるのですね?
>そのままマウスの左ボタンを押したままイメージ領域外にカーソルを
>移動(ドラッグ)させてもカーソルは変わったままですよね。
>その後マウスの左ボタンを離したらカーソルはデフォルトに戻りますよね。

ここまではちゃんと動いていたので、あとはべーちゃんさんのアドバイスを元に、
マウスポインタ部分だけ変えて(0とか99に)やってみたらうまくいきました!

本当にどうもありがとうございました!!

古いスレッドには追加発言できません。