デザイン画面のような処理をするには?

解決


Cappuccino  2004-03-18 09:48:56  No: 112427  IP: [192.*.*.*]

いつも参考にさせていただいてます。質問させていただきます。
VB6.0でのプログラムを前提としたときに、動的にコントロール
を配置し、マウスでコントロールの大きさ・位置等を自由に変更
するような処理は可能なのでしょうか?具体的にはデザイン画面
そのものを実行画面として処理するような感じなのですが・・・。
漠然としすぎている質問で申し訳ありませんが、よろしくお願い
します。

編集 削除
Cappuccino  2004-03-18 09:53:01  No: 112428  IP: [192.*.*.*]

すみません。追記です。
例えばユーザーの操作によって、テキストボックスを置いたり、
線を引いて太さ・長さ等を自由に変えたりです。
イベントが取れるコントロールの移動等はすでに実現していて、
テキストボックス等の大きさ変更もAPIを使って実現したのです
が、シェイプのようなイベントを取れないコントロールに対して
マウスで移動したり大きさを変えたりといったことは可能なのか
どうか知りたいのです。。

編集 削除
特攻隊長まるるう  2004-03-18 10:18:31  No: 112429  IP: [192.*.*.*]

>シェイプのようなイベントを取れないコントロール
フォームのイベントで取れば?

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    With Me.Shape1
        If (Y >= .Top And Y <= .Top + .Height) _
        And (X >= .Left And X <= .Left + .Width) Then
            .Top = .Top + 500
        End If
    End With
End Sub

編集 削除
Cappuccino  2004-03-18 10:38:30  No: 112430  IP: [192.*.*.*]

特攻隊長まるるうさん、さっそくのお答えありがとうございます。
コントロールに対するイベントがないと処理できないのかと思い込
んでました。。大変参考になりました。
ところで、マウスによる大きさの変更の方なのですが、現在、テキ
ストボックス等はAPIのSetWindowLongを使ってWS_THICKFRAMEを送っ
て大きさ変更可能にしているのですが、シェイプはウィンドウハン
ドルがないようなのですが、同じような処理をすることはできます
でしょうか?(T_T)

編集 削除
特攻隊長まるるう  2004-03-18 12:02:06  No: 112431  IP: [192.*.*.*]

>APIのSetWindowLongを使って
出来ないように思いますが…ボクは知りません。

>マウスによる大きさの変更
API を使わなくてもカーソルを変更してカーソルが
変更されている時に MouseDown と MouseUp で距離
を計算すれば出来そうですが…

編集 削除
Cappuccino  2004-03-20 05:30:28  No: 112432  IP: [192.*.*.*]

特攻隊長まるるうさん、お返事ありがとうございます。
おっしゃるとおり、大きさの変更もフォームへのイベ
ントを処理してできました。ありがとうございました。m(_ _)m

編集 削除