DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォームの固定

  • 題名: フォームの固定
  • 著者: マーシャリンガー
  • 日時: 2005/07/15 20:39:50
  • ID: 11830
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[XP/VB.NET/Framework1.1]
分類:[.NET]

VB6でFormのプロパティMoveable=Falseにすると
タイトルバーをドラッグしてもフォームが移動しないようにできましたが
VB.NETで同様のことができないでしょうか?
FormのMoveイベントでフォーム位置を元に戻すことも検討しましたが
ディスプレイがタッチパネルなのでMoveするとちらついてしまいます。
ただ、画面のプロパティ 「ドラック中ウインドウの内容を表示する」をもチェックにすればちらつかないのですが

Private Sub Form1_Move(ByVal sender As Object, _
     ByVal e As System.EventArgs) Handles MyBase.Move
Me.Left = 0
Me.Top = 0
End Sub

タイトルバーは消したくはないので、なにかいい方法ないでしょうか?
こんにちは、じゃんぬ です。

■No11830に返信(マーシャリンガーさんの記事)
> VB6でFormのプロパティMoveable=Falseにすると
> タイトルバーをドラッグしてもフォームが移動しないようにできましたが
> VB.NETで同様のことができないでしょうか?

API を使うことになります。
DeleteMenu(メニューのハンドル, SC_MOVE, MF_BYCOMMAND)
  • 題名: Re[2]: フォームの固定
  • 著者: マーシャリンガー
  • 日時: 2005/07/15 20:44:27
  • ID: 11832
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No11831に返信(じゃんぬねっとさんの記事)
> API を使うことになります。
> DeleteMenu(メニューのハンドル, SC_MOVE, MF_BYCOMMAND)
  すばやい回答ありがとうございます。
  早速試してみます。
■No11831に返信(じゃんぬねっとさんの記事)
> API を使うことになります。
> DeleteMenu(メニューのハンドル, SC_MOVE, MF_BYCOMMAND)

うまくいきました!
フォームの左上のメニュー「移動(M)」を削除することでフォームが移動できなくすることができるのですね。
とりあえず、解決したのでコードを記述します。
Private Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu As Integer, ByVal nPosition As Integer, _
ByVal wFlags As Integer) As Integer
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hWnd As Integer, ByVal bRevert As Integer) As Integer
Private Const SC_MOVE = &HF010 ' システムメニューの移動
Private Const MF_BYCOMMAND = &H0& ' メニュー項目のID

Private Sub Form1_Load(....略
Dim hwnd As Integer
hwnd = GetSystemMenu(Me.Handle.ToInt32, 0&)
Call DeleteMenu(hwnd, SC_MOVE, MF_BYCOMMAND)
End Sub

MSDNでDeleteMenuを調べてできた!と思ったらhwndとToInt32がうまくいかず
時間がかかってしまいました。GetSystemMenuも必要なんですね

->じゃんぬねっとさん。なんか回答上手ですね質問者のレベルにあった
  ナウイ(死語)回答って感じです。ありがとうございました
解決済み!
こんにちは、じゃんぬ です。
戯言を言わせてください。

■No11833に返信(マーシャリンガーさんの記事)
> フォームの左上のメニュー「移動(M)」を削除することでフォームが移動できなくすることができるのですね。

その通りです。
同様に「閉じる」を削除すると、右上の閉じるボタンが無効になりますよね。

> とりあえず、解決したのでコードを記述します。

結果報告ありがとうございます。m(_ _)m
こういった情報の共有が大切だと思います。

> MSDNでDeleteMenuを調べてできた!と思ったらhwndとToInt32がうまくいかず
> 時間がかかってしまいました。GetSystemMenuも必要なんですね

そうですね。(^^)
書こうかと思いましたが、敢えて書きませんでした。(いぢわるです)

> ->じゃんぬねっとさん。なんか回答上手ですね質問者のレベルにあった
>   ナウイ(死語)回答って感じです。ありがとうございました

これは難しいところなんですよね。(^^)
丁寧に説明するとその方のためになりませんし、かといっていきなりそれを求めるのも酷で...
あたしは、よく回答に失敗してます... (^-^A)

以上、戯言でした。。。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板