[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/06/21(Tue) 07:45
投稿者名:おじん
Eメール:
URL :
タイトル:
マウスの位置を取得
ここのsample=103を利用しています。
コントロールにスクロールが表示されたとき、取得できません。
この場合(位置)でも取得する方法はありませんか?
_MouseMoveの中に記述しています。従って、スクロールがないときは
API関数を使用しなくても位置(X,Y)は取得できますが、スクロールが
あると取得できません。で、API関数を使えば取得できるのかと期待し
たわけです。

やりたいこと:
コントロールの端を摘んで、resize(拡大・縮小)をしたい。

よろしくお願いします。なお今日人間ドック入りのため、お返事/お礼は
夕方になります。

投稿時間:2005/06/21(Tue) 08:10
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: マウスの位置を取得
最初の部分の意味はよく理解できませんが?
> やりたいこと:
> コントロールの端を摘んで、resize(拡大・縮小)をしたい。
上記を実現するなら、リサイズ枠をもったウィンドウのコントロールを作成すれば可能です。
GetWindowLong SetWindowLong SetWindowText 等のAPIを使用
(SampleNo=151)

参考図  hhttp://bbs4.aimix-z.com/gbbs.cgi?room=hanafusa

投稿時間:2005/06/21(Tue) 15:44
投稿者名:おじん
Eメール:
URL :
タイトル:
Re^2: マウスの位置を取得
> 最初の部分の意味はよく理解できませんが?
例えば、Formに高さHeightの小さいDirListBoxとLabelを置き、
dir1.path="c:\"
とすれば、DirListBoxの右には縦方向のスクロールが表示される
はずです。もし表示されなければ、DirBoxの高さHeightをより
小さくするか、フォルダーの数が多いイフォルダーに変える。
ここで、Sample=103にあるコードを真似し、次のコードでテスト
します。マウスがスクロールの位置にある場合このイベントが発生
しないので、X、Yの値は表示されません。下記「やりたいこと」
のためにはDirListBoxの右端のX値を取得する必要があります。
それで、今回の質問になりました。
Private Sub Dir1_MouseMove(x as single, y as single, ....)
'クリックした位置にマウスを移動
  SetCursorPos MoP.x, MoP.y
  'その位置を表示
  Label1.Caption = "マウス座標 X=" & MoP.x & " Y=" & MoP.y
End Sub

> > やりたいこと:
> > コントロールの端を摘んで、resize(拡大・縮小)をしたい。
> 上記を実現するなら、リサイズ枠をもったウィンドウのコントロールを作成すれば可能です。
> GetWindowLong SetWindowLong SetWindowText 等のAPIを使用
> (SampleNo=151)
> 参考図  hhttp://bbs4.aimix-z.com/gbbs.cgi?room=hanafusa
初めはPictureBoxの中にDirListBoxを貼り付けてやっていたのですが、
見かけが好きになれず、裸のDirListBoxに、という経緯があります。
もう一度チャレンジしています。
わけのわからない質問をして申し訳ありませんでした。
ありがとうございました。(人間ドック=異常なし、めでたし目出度し)。

投稿時間:2005/06/21(Tue) 15:48
投稿者名:おじん
Eメール:
URL :
タイトル:
Re^3: コードの訂正
コードが間違っていました。次のように訂正します
Private Sub Dir1_MouseMove(x as single, y as single, ....)
'マウスの位置
  GetCursorPos MoP
  'その位置を表示
  Label1.Caption = "マウス座標 X=" & MoP.x & " Y=" & MoP.y
End Sub

投稿時間:2005/06/22(Wed) 00:47
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re: マウスの位置を取得

> やりたいこと:
> コントロールの端を摘んで、resize(拡大・縮小)をしたい。

 これは、前回の発言からコントロールの端をつかむのではなく
スプリッターを実現したいのではないかと思います。それは、
2つのコントロールの間に細長いコントロール(スプリッター)
をおいて、それをマウスでドラックすることで両側のコントロールの
サイズを変更するものです。

 VB.netでは、標準のコントロールであるんですが、VBには
ありません。しかしながら、ピクチャボックスなどを使って
それらしくすることができます。

 VBの新規作成で、アプリケーションウィザードを選択し、
ウィザードの2番目の画面で エクスプローラ スタイルを選択します。
それ以外は、変更せずにウィザードを進めてください。
すると、エクスプローラのようなウィンドウが出来上がるので、
それを参考にするか、それをベースにしてください。

投稿時間:2005/06/22(Wed) 04:48
投稿者名:おじん
Eメール:
URL :
タイトル:
Re^2: マウスの位置を取得
>
> > やりたいこと:
> > コントロールの端を摘んで、resize(拡大・縮小)をしたい。
>
>  これは、前回の発言からコントロールの端をつかむのではなく
> スプリッターを実現したいのではないかと思います。それは、
そのとおりです。我流の学習のため、VBの否、全般の「用語」を
知らないまま、やっております。スプリッターなる言葉ははじめてで
いろいろなコントロールを「間に」置いてやってみました。勿論、
PictureBoxも。しかし今のところ思わしい結果になっていません。
もっともらしいのが、右側のコントロールの左端をつかむ場合です。
これとてマウスと境の位置が少しずれます。

>  VBの新規作成で、アプリケーションウィザードを選択し、
まだウイザードを使ったことがなかったのですが、これ面白そうです。
興味がそちらに移りそうです。おじんのひまつぶしのネタに残しておき
いずれやってみようと思います。

一連の質問のいきさつは、
1.ListViewに興味を持ち、使い方を知ろう、、、
2.どんな使い方(エクスプローラ風ファイルビューワを思いつく。
日ごろ、PC内に雑多にあるファイル内容がファイル名からは判断
できなくなり、苦慮していたことから、簡単に調べるものがあれば
と感じていた)

Starfishさま、重ね重ね、ありがとうございます。ひまつぶしの
者にも丁寧にご指導をしてくださること感謝しています。できる
だけ自学していますが、同じ問題に何日もかかると、つい、ここを
利用させていただきます(実は未解決問題は山ほどあるのですが)。
あつかましくも、今後ともよろしくお願いいたします。
ありがとうございました。

投稿時間:2005/06/22(Wed) 14:06
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: マウスの位置を取得
先のリサイズ可能なコントロールを利用してもできますよ。

投稿時間:2005/06/22(Wed) 17:35
投稿者名:おじん
Eメール:
URL :
タイトル:
Re^4: マウスの位置を取得
> 先のリサイズ可能なコントロールを利用して。
> Resize イベントがないので簡易的にタイマーコントロール利用しました。
> (本格的にするならサブクラス化してメッセージを処理すればいいかと)
サンプルソース、ありがとうございました。
年の性か、どうしても理屈を知ろうとします。なぜ、マウスが右左矢印に
変わるのか、不思議です。Wstyleに何か種明かしがあるのでしょうか。
下記ソース例と比較すると非常に簡略です。ただ、Timerで関し続けている
ことが何とはなしに気にかかります。

投稿時間:2005/06/22(Wed) 18:13
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: マウスの位置を取得
> > 先のリサイズ可能なコントロールを利用して。
> > Resize イベントがないので簡易的にタイマーコントロール利用しました。
> > (本格的にするならサブクラス化してメッセージを処理すればいいかと)
> サンプルソース、ありがとうございました。
> 年の性か、どうしても理屈を知ろうとします。なぜ、マウスが右左矢印に
> 変わるのか、不思議です。Wstyleに何か種明かしがあるのでしょうか。

> Timerで関し続けていることが何とはなしに気にかかります。
提示したのはテスト用(動作確認)で本格的に使用するならサブクラス化してリサイズ
のメッセージを取得してその中で処理すればできますので下記のように書いていたのです。

> > Resize イベントがないので簡易的にタイマーコントロール利用しました。
> > (本格的にするならサブクラス化してメッセージを処理すればいいかと)

誤解を生むだけの不要のコードのようなので削除しておきます。

投稿時間:2005/06/22(Wed) 18:35
投稿者名:おじん
Eメール:
URL :
タイトル:
Re^6: マウスの位置を取得
> 誤解を生むだけの不要のコードのようなので削除しておきます。
ご迷惑をおかけしました。以後、気をつけます。