フォームの任意の部分をクリックしてドラッグすることで移動できるウィンドウフォームがあります。私はWndProcをオーバーライドし、NCHITTEST関数の結果をHTCAPTIONに設定して、キャプションをクリックしたと思ってフォームをだますようにしました。ドラッグすることができます。ドラッグ可能なWinFormの問題
このためのコードは素晴らしい作品、そして以下の通りです:
protected override void WndProc(ref Message msg)
{
if (msg.Msg == (int)WinAPI.NCHITTEST)
{
DefWndProc(ref msg);
if ((int)msg.Result == (int)MousePositionCodes.HTCLIENT)
{
msg.Result = (IntPtr)MousePositionCodes.HTCAPTION;
return;
}
}
}
base.WndProc(ref msg);
}
問題は、私は(これはドラッグ可能なツールバーとして動作している)の形にToolStripPanelをドッキングするときに発生します。 ToolStripで覆われていないToolStripPanelの部分は、フォーム全体をドラッグモードにするために必要なメッセージを渡す必要があります。
私はにWndProc関数をオーバーライドするために自分自身のToolStripContainerクラスを作成し、上記と同じ機能を使用して試してみましたが、それはToolStripContainerが内で所望の機能ではないフォームを、ドラッグモードを入射させます。
また、親にNCHITTESTメッセージを渡し、現在のマウス座標で新しいメッセージを作成して、WinAPIと親のウィンドウハンドルを使用して親に送信しようとしました。
私はここで簡単なものを紛失している必要があります...誰でもアイデアはありますか?
ウィンドウマネージャを欺くのではなく、マウスの左ボタンとマウスの移動イベントを処理し、フォームを動かすだけでいいですか? –