WindowStateを最大化にした画面のタイトルバーをダブルクリックして画面の移動ができないようにするには?

解決


ケイ  2002-05-29 17:42:43  No: 75656  IP: [192.*.*.*]

WindowStateを最大化にしたフォームでタイトルバーをダブルクリックすると、
画面が移動できるようになってしまいます。

タイトルバーは表示しておきたいので、BorderStyleを「0−なし」にはしたくありません。

ダブルクリックしても画面も移動できないようにする方法はないのでしょうか?

VB6.0+サービスパック5で開発しています。

編集 削除
たかみちえ  URL  2002-05-30 00:29:30  No: 75657  IP: [192.*.*.*]

フォームのMoveAbleプロパティでとめられるかも。

  だめだったら…、SetWindowLongでサブクラス化して、
WM_MOVEを隠す…とかでどうでしょうか?

編集 削除
ケイ  2002-05-30 10:22:30  No: 75658  IP: [192.*.*.*]

返信ありがとうございます。

MoveAbleはfalseに設定してあったので、だめみたいでした。

SetWindowLongでサブクラス化して、WM_MOVEを隠すという方法が
よく分からなくて・・・。
もしよろしければ教えていただけますか?

編集 削除
Say  2002-05-30 16:58:57  No: 75659  IP: [192.*.*.*]

サブクラス化については、
vbvbvb.comやらPCDNやらSAK図書館やら
あちこちでサンプルが見つかりますが、
十分に理解してから実行してください。

編集 削除
ケイ  2002-06-01 09:45:04  No: 75660  IP: [192.*.*.*]

サンプルが色々見つかりました。
参考にさせてもらったのですが、難しいですねー。

実はやってみたのですがうまくいかなくて、結局
BorderStyleを固定(実線)にしてWindowStateを標準にし、
ソースの中で座標とフォームの大きさをスクリーンサイズにすることになりました。

たかみちえさん、Sayさん、ありがとうございました。

編集 削除
ぽり  2002-06-01 11:45:45  No: 75661  IP: [192.*.*.*]

Private Sub Form_Resize()
    Me.WindowState = 2
End Sub

こんなんダメですよね・・・。

編集 削除
ケイ  2002-06-03 10:46:40  No: 75662  IP: [192.*.*.*]

ぽりさん返事が遅くなって申し訳ありません。

それも話にでたんですが、さすがにビヨ〜ンって感じになるじゃないですか。
だから無理だねーって話になったんです。

ありがとうございました。

編集 削除
たかみちえ  URL  2002-06-03 15:50:42  No: 75663  IP: [192.*.*.*]

いまおもいついたんですけど、
キャプションを空っぽに、ControlBoxをけして、枠だけあるタイトルバーなしのウィンドウを作り、
上にはタイトルバーもどきを作る…でもいいですね。

編集 削除
ケイ  2002-06-04 09:21:43  No: 75664  IP: [192.*.*.*]

>キャプションを空っぽに、ControlBoxをけして、
>枠だけあるタイトルバーなしのウィンドウを作り、
>上にはタイトルバーもどきを作る…でもいいですね。

なるほど。そーいうことでもできるんですねー。
私はVBを扱うのは初めてで今回の仕事に入る2週間くらい前に
勉強をして仕事にはいったんです。
まだまだ不勉強な為に効率のいい方法とかどうやったらできるのか
といった事を思いつきにくくて・・・・。

ありがとうございました。では。

編集 削除