0

私の MFC アプリケーションのビューで、クリック & ドラッグで特定の長方形の領域を選択できます。しかし、ユーザーが現在の画面よりも広い領域を選択したい場合、マウス ポインターがクライアント領域の境界近くにあるときにビューが自動的にスクロールしないため、それができません。

この問題を解決するにはどうすればよいですか? どんな参考書でもいいです。

4

1 に答える 1

1

通常、これは、ユーザーがマウス ボタンを押したままにしている場合にのみ行います。その場合、通常はクリック時にマウスをキャプチャする必要があります。次に、メッセージを処理しWM_MOUSEMOVEます。あなたのケースでは、マウスの現在の位置をウィンドウの境界と比較し、十分に近づいたら (たとえば、10 ピクセル以内)、その位置でスクロールを開始します。

これを行うときは、スクロール速度をかなり慎重に制御することを付け加えなければなりません-プログラムによっては、スクロールが速すぎてほとんど使用できなくなるものがあります.ウィンドウの端に近づいた瞬間、意図した場所をすでにはるかに超えてスクロールしています。他の人は反対の傾向があります。あなたが何をしようとも、スクロールが非常に遅いため、短い距離でも移動するのに永遠にかかるように見えます。

「適切な」速度を得るための簡単な答えがあるとは思えません。通常はグラデーションが必要なので、境界に近づくとスクロールが遅くなり、近づくとスクロールが速くなります。ただし、その上限と下限についてはかなり注意する必要があります。そのため、「ああ、私はそこに着くつもりですか」から直接「おっと、バックアップ、それはもう行き過ぎだ!」

于 2012-04-17T16:34:15.423 に答える