私はForm Border(タイトルバー)のマウスをちょっと手に入れようとしていましたが、それは壊れているようです(同じことを述べている数多くの記事を見つけました)。WndProc WM_NCMOUSEUPいいえ
私がテストしている:
Const WM_LBUTTONUP = &H202
Const WM_MBUTTONUP = &H208
Const WM_RBUTTONUP = &H205
Const WM_NCXBUTTONUP = &HAC
Const WM_XBUTTONUP = &H20C
Const WM_MENURBUTTONUP = &H122
Const WM_NCLBUTTONUP = &HA2
Const WM_NCRBUTTONUP = &HA5
Const WM_NCLBUTTONDOWN = &HA1
Const WM_NCMOUSEMOVE = &HA0
をかなり徹底的に。私が見ているのは、WM_NCLBUTTONUPは動作しませんが、WM_NCLBUTTONDOWNは動作し、リリース時にはWM_NCLBUTTONUPが必要ですが、代わりにWM_NCMOUSEMOVEを取得します。
:あなたは(フォームの境界線別名)クライアント領域の外にマウスを移動するたび期待どおりもWM_NCMOUSEMOVEを得ること。..これを克服するための最初の試みであることの問題は、私が出ています「http://www.pinvoke.net/default.aspx/Constants.WMかなり密接にかかわらず、そしてドン:この
Private MouseIsDown As Boolean = False Protected Overrides Sub WndProc(ByRef m As Message) Const WM_NCLBUTTONDOWN = &HA1 Const WM_NCMOUSEMOVE = &HA0 If (m.Msg = WM_NCLBUTTONDOWN) Then MouseIsDown = True Console.WriteLine("NCLButtonDown") ElseIf (m.Msg = WM_NCMOUSEMOVE) Then If MouseIsDown Then Console.WriteLine("NCMouseMove" + Environment.NewLine + "LParam: " + m.LParam.ToString() + Environment.NewLine + "WParam: " + m.WParam.ToString() + Environment.NewLine + "Res: " + m.Result.ToString()) MouseIsDown = False Else Console.WriteLine("Not mouseup") End If Else End If MyBase.WndProc(m) End Sub
は初期テストを通じて働くことだが、これは適切である場合、私は好奇心、または私は単純に行方不明ですメッセージがある場合は(私が通じ見てきました右のようなものは見ないでください)。
私はこれをしようとすると、私は次のメッセージを得る:NCLBUTTONUPのためのドキュメントによるとWM_NCLBUTTONDOWN [161] WM_SYSCOMMAND [274] WM_CAPTURECHANGED [533] を:_if窓このメッセージは投稿されていません._おそらく、ボタンをクリックすることによって、ウィンドウがマウスをキャプチャしますか?ちょうど推測。 –