重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

フォームをリサイズした時に動作を行いたいのですが、
Form_Resizeだとリサイズ中ずっと効いてしまいます。
マウスを離した瞬間に初めて事が起こるようにするにはどうすればよいのでしょうか。
よろしくお願いします。

A 回答 (9件)

フックをしてあげましょ



http://www.vbvbvb.com/jp/gtips/index0801.html
825番目です。
    • good
    • 0
この回答へのお礼

ご回答あり待とうございます。
しかし、すみませんがそこのgSetWindowLongGwlWndProcWmExitSizeMove.lzhをダウンロードできなくて、仕組みがよくわかりません。
お教えいただけないでしょうか。

お礼日時:2005/07/14 20:10

#6です。



右クリックで「対象をファイルに保存」をやると、DLできません。
ブラウザでJavaの制限をきつくしていると、DLできません。



それでも取得できないなら、ブラウザでソースの表示をしてシコシコ手直ししましょう。

1.「Option Explicit」から一番最後の「End Sub」までをテキストエディタなどで取得
2.「<br>」を改行に変換
3.「&amp;」を「&」に変換
4.その他コンパイルが通らない部分を、HPと見比べて手直し
    • good
    • 0
この回答へのお礼

ありがとうございます。
仕組みはわかったのですが、適応していざ実行しようとしたら、
実行ボタンを押した途端にVBごと終了してしまいました。
どうしたのでしょう。

お礼日時:2005/07/14 21:59

回答No.6で紹介されていたページには、すぐにコピーして使える形のソースコードがありましたよね? それを使えば実現できそうですね、という意味です。

    • good
    • 0
この回答へのお礼

ありがとうございます。
必要なオブジェクトはコマンドボタン2つとラベルとリストボックスだけですか?

お礼日時:2005/07/14 21:14

おー、回答No.6の方法いいですね。

特殊なリサイズ(最大化/最小化/直接ウィンドウサイズ指定)以外は動作するみたい。

この回答への補足

すみませんが、詳細をお教えいただけないでしょうか。

補足日時:2005/07/14 20:14
    • good
    • 0

#4さんへ


#3です。
うぉぉぉ~イベントが・・・イベントが発生しまくりです。
ほうほう!( ..)φメモメモ
そうですか、そんな関係がありましたか。

と、いうことは、デスクトップのデザイン・効果の設定で
「ドラッグ中にウィンドウの内容を表示する」をオフにしたら、
質問者のthrush76さんが、個人的または眼の届く範囲で使う分にはそれで解決ですね。

フリーソフトなど不特定多数の人に配布するにはちょっと無理がありますが・・・
    • good
    • 0

回答No.3の回答者の方へ:



VB6の場合、同じプログラムでテストすると、デスクトップのデザイン・効果の設定で「ドラッグ中にウィンドウの内容を表示する」がオフの場合はリサイズを行ってマウスボタンを離した瞬間のみイベントが発生、効果設定がオンの場合はリサイズフレームが変化するたびにイベントが発生します。

VB4でも「ドラッグ中にウィンドウの内容を表示する」をオンにするとリサイズフレームが変化するたびにイベントが発生しませんか?

この回答への補足

これは目から鱗です。ありがとうございます。
しかし、今回の場合は人に配布するのが目的なのです。
何か良い方法はありませんか。
因みに申し遅れましたがバージョンはVB6です。

補足日時:2005/07/09 15:45
    • good
    • 0

> Form_Resizeだとリサイズ中ずっと効いてしまいます。


はて?

Private Sub Form_Resize()
Debug.Print Time
End Sub

これで、デバッグウィンドウで確認したのですが、
リサイズしてマウスを離した瞬間しかイベントが発生しません。

こちら、VB4です。(^_^;)
    • good
    • 0

resizeイベントの時には、フラグを設定するだけにして、


マウスアップイベントの時にフラグを見て
resize処理を行いフラグをクリア
というような感じでどうでしょう
(実際に試していないので、うまくいくかどうかはわかりません)

この回答への補足

すみません。
Resizeの時はMouseUpが効かないようです。

補足日時:2005/07/08 19:12
    • good
    • 0

フォームがリサイズ中であるかどうかのイベントはない(というより、リサイズ中という状態自体がない)ので困ってしまいますね。



リサイズイベント発生に行う「動作」と同時にタイマーを起動し、最後の「動作」から一定時間を経過するまでは再度同じ「動作」を行わない、という形にしてはいかがでしょうか。

これですと、リサイズ中はタイマーによる一定間隔で「動作」が行われることになります。

また、リサイズイベント発生と同時にタイマーを起動し、最後のリサイズイベントから一定時間を経過するまでは「動作」を行わない、という形も考えられます。

これですと、素早いリサイズ動作の場合はリサイズ終了後一定時間が経過してから「動作」が行われることになります。タイマーによる間隔よりもゆっくりとリサイズした場合には、リサイズ中に何度か「動作」が行われます。

なお、いずれの方法でも、リサイズ終了時にはタイマーによる間隔よりも素早く反応することができません。「動作」の内容によってはリサイズ中の「動作」を最小限にし、リサイズ終了時に素早く「動作」を行うことも可能ですが、それが可能かどうかは「動作」の内容に依存するのでここでは省略します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!