• ベストアンサー

Form_Resize以外でフォームサイズの変化を知る方法。

NT4WS+VB6+SP5にて開発しております。 Form_Resizeイベント以外でフォームサイズの変化を知りたいと思っております。 実際Form_MouseUpを使えばわかるだろうと思い試してみたのですが、 Form_MouseUpイベント自体を発生させることが出来ずに断念しました(^^; ご存知の方よろしくお願いしますm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

サブクラス化してメッセージをフックすれば出来ます。 http://www.vbvbvb.com/jp/gtips/ の824~840を参照 しかし、Form_Resizeイベントが何故駄目なのでしょうか?

mk_jmc
質問者

補足

回答ありがとうございます。 なぜForm_Resizeではだめなのかと言いますと、 Windowsの「ウィンドウ内容を表示したままドラッグする」の設定を 有効にしていると、サイズ変更するたびにForm_Resizeが走ってしまうので それを避けたかったのです。

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

form_resizeでタイマを立てて、マウスボタンが放された時に イベント処理を実行すればいいと思います。 Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Const VK_LBUTTON = &H1 'マウス左ボタン Const VK_RBUTTON = &H2 'マウス右ボタン Private Sub Form_Resize() Timer1.Interval = 100 'タイマを有効 End Sub Private Sub Timer1_Timer() 'マウスのボタンが押されているなら処理を実行しない If (GetKeyState(VK_LBUTTON) And &H8000) Then Exit Sub 'If (GetKeyState(VK_RBUTTON) And &H8000) Then Exit Sub Timer1.Interval = 0 'タイマを無効 'ここにForm_Resizeのイベント処理 Beep End Sub

関連するQ&A

  • フォームの縦横比率を一定にする方法

    お世話になります。 環境:NT4.0 W + VB6(SP3) 画面内に納まる程度のサイズ変更という前提で、フォームの縦横比率を一定にする方法を教えて頂けませんでしょうか? フォームの縦横のサイズが1対2だとします。 フォームの縦を1.5倍にしたら、横も1.5倍になるようにしたいのです。 Form_Resize()時に、フォームの縦が変更されたら横も変更する、あるいは横が変更されたら縦を変更するようにコーディングしたのですが、再帰的にForm_Resize()が呼ばれてしまい、正しくサイズが変更されません。 よろしくお願いします。

  • VB2005での画面サイズの固定の方法

    お世話になっております。VB2005初心者の者です。 画面サイズをマウスで変更できないようにするには どうしたらよいのでしょうか。 .NET以前では画面のプロパティを変更すればできた 処理なのですが、VB2005ではプロパティを探しても 設定する項目が見つかりませんでした。 また、イベントでResizeや、MouseUp等で設定を しようとしてもエラーが発生してうまく処理できません。 ご回答のほど、宜しくお願いいたします。

  • フォームのResizeイベントについて

    超ド級の初心者ですが、Visual Basic.NETの本を買って勉強を始めました。 その中で「フォームのResizeイベントが発生するたびに、フォームのWidthプロパティをテキストボックスに表示するように」との練習問題がありましたがうまくできません。 Visual Basic6.0もあるので、そちらで同じことをやってみたところ、以下のようなコードで正常に動作しました。 Private Sub Form_Resize() Text1.Text = Me.Width End Sub Visual Basic.NETではどう記述すればいいのか教えていただけませんか?

  • フォームのリサイズ

    現在、フォームのリサイズのときにこれ以上高さを変えないようにするために以下のようなコードを記述しています。 ------------------------------ Private Sub MDIForm_Resize()    If Height < 2500 Then     Height = 2500     Exit Sub    End If End Sub ------------------------------ 一応、これで上手くはいっているのですが、実行時、高さを2500以下にしようと動かしたとき、ちらつきというか妙な残像のようなものが出てしまいます。 こんな変な残像が出ずに、VB自身の画面を変えたときのようにピタっと止まるような表示が出来るようにする方法は無いものでしょうか。 ちなみに、開発環境はWin2000、VB6です。 よろしくお願いします。

  • フォームがリサイズされた時の各コントロールの位置変更コードについて

    教えてください。 前々から疑問だったのですが、VBでフォームをリサイズした場合に それぞれのコントロールもそれに合わせて大きさが変更されたり 移動したりという状態にするには、当然Form_Resizeのコードを 書く必要があると思うのですが、VBでツールを作成される方は 皆さんひとつひとつのコントロールの位置を計算しながら毎回 コードを書いているのでしょうか? OCXなどを使うと、勝手にコントロールの位置を調整してくれるものも ありますが、やはり皆さん自分でコードを書いていらっしゃるのでしょうか? 私が分かるのは、フォームにテキストボックスのみを貼り付けて、 Private Sub Form_Resize() Form1.text1.Top = 0 Form1.text1.Left = 0 Form1.text1.Width = ScaleWidth Form1.text1.Height = ScaleHeight End Sub と書くと、リサイズに合わせてテキストボックスが画面いっぱいにサイズ変更 するというものです。 コマンドボタンとか色々貼り付けた状態ではどのように書けばいいのか いまひとつ分かりません。 皆さんはどのようにされているのでしょうか? 是非是非教えてください。

  • Formサイズの最小値

    環境 VB6.0 ResizerというOCX Formのサイズを可変にしています。 小さくできる最小値を設定したいのですが、 どのように出来ますか? Form_Resizeに、 if me.width < '最小値' then me.width = '最小値' end if としたら、最小値より小さくしようとして戻すので、 画面がチカチカします。 Resizerで簡単にできませんか?

  • フォームの左上のアイコンだけ消したい。

    NT4WS+VB6+SP5にて開発しております。 質問なのですがフォームの左上に出てるアイコンを消したいのです。 ControlBoxプロパティをいじると右上の×ボタンなども消えてしまうので、 左上のアイコンだけを消す方法を探しています。 よろしくお願いします。

  • フォームサイズ変更時のコントロール位置について

    OS:WindowsXP Pro SP2 VB:6.0 SP6 はじめまして。 VBで開発を行っているのですが フォームのサイズ変更をした時、コントロールの位置に困っています。 最大化した時などは端にコントロールが寄ってしまい見た目が大変悪いです。 フォームサイズの変更時にコントロールも任意の位置に移動する方法はどのようにすれば良いのでしょうか? ご存知の方ご教示宜しくお願いいたします。

  • VBで作成したアプリのリサイズ方法

    VBで作成したアプリのリサイズ方法 VB2010を使用してアプリケーションを作成しました。 exeだけコピーしてノートPCで実行しようとしたところディスプレイサイズの違いではみ出してしまっています。 開発環境は1280x1024でアプリのサイズはほぼ全画面の大きさです。 ノートPCは1024x768です。 実行マシンの環境に合わせて勝手にリサイズされるものと思っていたので困っています。 アプリの実行サイズを簡単にリサイズ(縮小)できる方法はないでしょうか。。 よろしくお願い致します。

  • VB2008 デバッグを実行すると作成したフォームとは違い、Form1が表示されます

    VB2008をはじめたばかりの初心者です。 ファイル入出力のプログラムを書いて、フォームも作成(OpenFileDialogなどを使用)しました。 デバッグを実行すると、フォームでファイル入出力ができるようになる予定なのですが、 「Form1」という何もないフォームがでてきます。 (はじめに手を加えていない、Form1というものがなぜか表示されます。もちろんボタン等もありません) 実際に作成したフォームは、frmWav.vbというプログラムのため、フォームの名前もfrmWav.vb[デザイン]となっています。 デバッグ自体はエラーとはならないため、原因がわかりません。どうかご回答おねがいします!!

専門家に質問してみよう