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

タイトルバーにコンテキストメニュー

環境/言語:[VB.NET]
分類:[.NET]

はじめまして。

ウインドウのタイトルバーを右クリックしたら、自分で作ったコンテキストメニューを表示するようにするにはどうしたらいいでしょうか?

よろしくお願いします。
> ウインドウのタイトルバーを右クリックしたら、自分で作ったコンテキストメニューを表示するようにするにはどうしたらいいでしょうか?

Form.WndProc をオーバーライドして WM_NCHITTEST メッセージを捕まえて、お好みの条件でコンテキストメニューを表示すればよろしいかと。
> Form.WndProc をオーバーライドして WM_NCHITTEST メッセージを捕まえて、お好みの条件でコンテキストメニューを表示すればよろしいかと。
>

回答ありがとうございます。

色々調べたんですがmessageプロパティの使い方が今一よく分かりません。
あと、右クリックなので、WM_NCRBUTTONDOWNメッセージの方がよいのでしょうか?
すみません、.netをまだあまりよく分かっていないみたいで。
> 色々調べたんですがmessageプロパティの使い方が今一よく分かりません。

訂正
System.Windows.Forms.Messageの使い方が今一よく分かりません。
マウスの座標なども取得したりできるのでしょうか?

詳しいサイトなどがあったら紹介願います。
ちょっと適当ですが、こんな感じでどうでしょう。

Private Const WM_NCRBUTTONDOWN As Integer = &HA4
Private Const HTCAPTION As Integer = 2

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    If m.Msg = WM_NCRBUTTONDOWN And m.WParam.ToInt32() = HTCAPTION Then
        Me.ContextMenu1.Show(Me, Me.PointToClient(Cursor.Position))
        Return
    End If
    MyBase.WndProc(m)
End Sub
無事できました!
コンテキストメニューの座標をどう取得したらよいか分からなかったんですが、
こんなやりかたができたんですね。まだまだ勉強不足です。

渋木宏明(ひどり)さん、管理人さん本当にありがとうございました。
解決済み!

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