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

投稿時間:2005/09/21(Wed) 12:04
投稿者名:モモ
Eメール:
URL :
タイトル:
フォームの移動を禁止する
こんにちは。いつもお世話になってます。

フォームのタイトルバーによる移動を無効、
または移動OKだけどマウスを放した位置から
元の位置にと戻す(イメージでは引っ張ったフォームをもとの位置にビィョ〜ンと戻す)
処理を行いたいのですが 可能でしょうか?

調べてみてタイマーを使った処理方法も
ひとつの手だと思っているのですが
それですと ビィョ〜ンと戻す処理が
思いつきません。

仕様上、タイトルバーは必須なので
固定にはできません。
なんとか思いどおりの感じに近づけたい思います。

アドバイスお願いします。

投稿時間:2005/09/21(Wed) 12:14
投稿者名:たけ
Eメール:
URL :
タイトル:
Re: フォームの移動を禁止する
> こんにちは。いつもお世話になってます。
>
> フォームのタイトルバーによる移動を無効、
> または移動OKだけどマウスを放した位置から
> 元の位置にと戻す(イメージでは引っ張ったフォームをもとの位置にビィョ〜ンと戻す)
> 処理を行いたいのですが 可能でしょうか?
>
> 調べてみてタイマーを使った処理方法も
> ひとつの手だと思っているのですが
> それですと ビィョ〜ンと戻す処理が
> 思いつきません。
>
> 仕様上、タイトルバーは必須なので
> 固定にはできません。
> なんとか思いどおりの感じに近づけたい思います。
>
> アドバイスお願いします。

VB、サブクラス化をキーワードにググってみて下さい。
WM_MOVEメッセージが来たときにウィンドウの位置を
所定の位置へ戻すという処理を入れれば良いと思います。

投稿時間:2005/09/21(Wed) 12:22
投稿者名:じゃんぬねっと
Eメール:
URL :http://jeanne.wankuma.com/
タイトル:
Re: フォームの移動を禁止する
こんにちは、じゃんぬ です。

> フォームのタイトルバーによる移動を無効、

VB6 だったら Form の Moveable を false にするだけでは?
VB7 以降ならば、GetSystemMenu して DeleteMenu ですが。

投稿時間:2005/09/21(Wed) 13:04
投稿者名:モモ
Eメール:
URL :
タイトル:
Re^2: フォームの移動を禁止する
VB歴1年半になりますがFormのプロパティに関して
あまり注意深く見たことがなく今はじめてMoveableプロパティが
あることを知りました。
これまではWindowStateやBorderStyle、Buttonの設定くらいしか
使用することなくここまで来てしまいました。
お恥ずかしい限りです(=▽=;
おかげさまで思い通りになりました。
ありがとうございました。

サブクラス化もあるということなので
時間があるときに勉強してみたいと思います。

投稿時間:2005/09/21(Wed) 14:29
投稿者名:モモ
Eメール:
URL :
タイトル:
Re^3: フォームの移動を禁止する
解決だと思いましたが
Moveableプロパティは実行時に切り替えできないようですね。
システムのプロパティにてフォームの移動不可を
切り替えて使用したかったのですが…残念。

なんとかサブクラス化で実現できそうです。
ありがとうございました。

投稿時間:2005/09/21(Wed) 16:05
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^4: フォームの移動を禁止する
> なんとかサブクラス化で実現できそうです。

サブクラス化しなくても、システムメニューをプログラム上から削除・元に戻すを
実行すれば、移動できないように/移動できるように設定できます。

ここの逆引きヘルプにサンプルがあります。

投稿時間:2005/09/22(Thu) 17:12
投稿者名:モモ
Eメール:
URL :
タイトル:
Re^5: フォームの移動を禁止する
ありがとうございました。
サンプルの動作を確認し、実装しました。
サブクラス化することなく実現でき感動です。

質問なのですが
システムメニューを削除した後
  Form1.Hide
  Form1.Show
としているのはなにか理由があるのですか?
画面のちらつきが気になるのですが
なければないでOKなのでしょうか?

投稿時間:2005/09/22(Thu) 17:35
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^6: フォームの移動を禁止する
> としているのはなにか理由があるのですか?
> 画面のちらつきが気になるのですが
> なければないでOKなのでしょうか?

その部分をコメントにして試して見れば理由が解るはずですが。

只、DrawMenuBar API に置き換えてみて試して見たらどうでしょうか?

失礼しました。
関数の方で DrawMenuBar を使っていましたね。だったら、その分を削除
するなり、コメントにしてご使用下さい。
削除忘れでした。<m(__)m>

投稿時間:2005/09/22(Thu) 19:00
投稿者名:モモ
Eメール:
URL :
タイトル:
Re^7: フォームの移動を禁止する
ご回答ありがとうございます。
今後もよろしくお願いします。