何らかの理由で、ユーザーが実際に X ボタンをクリックしたことを検出する必要があります。私がこれまでに持っているのはこれです:
protected override void WndProc(ref Message m)
{
if (m.Msg == (int)0xa1) //WM_NCLBUTTONDOWN
{
Point p = new Point((int)m.LParam);
p = this.PointToClient(p);
if (p.X > 680)
{
//do what I need to do...
}
}
base.WndProc(ref m);
}
基本的に、ウィンドウの非クライアント領域でのマウスクリックである「WM_NCLBUTTONDOWN」メッセージを探します。次に、LParam から X 座標と Y 座標を取得し、最後にそれを画面座標に変換します。したがって、この時点で、ユーザーが非クライアント領域をクリックしたことがわかり、フォームのどこにあるかがわかります。
私の質問は、これらの座標が X ボタン上にあるかどうかをどのように確認できるかです。今のところ、私は 680 をハードコーディングしています。これは、ウィンドウの現在のサイズで機能するためです (サイズは大きくありません)。オプション。さらに、Y 座標のコーディングすらしていないため、誰かがウィンドウの右端をクリックすると、そのコードもトリガーされます。それで...誰かアイデアはありますか?