По той или иной причине мне нужно определить, когда пользователь действительно нажимал кнопку 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", которое представляет собой щелчок мышью в не клиентской области окна. Затем я получаю координаты X и Y от LParam и, наконец, преобразовываю их в Координаты экрана. Итак, на данный момент я знаю, что пользователь нажал на не клиентскую область, и я знаю, где в форме.
Мой вопрос: как я могу определить, находятся ли эти координаты на кнопке X? На данный момент я жестко программирую 680, потому что это то, что работает в текущем размере окна (оно не имеет значительного размера), но проблема в том, что я использую Windows 7, которая имеет более крупные кнопки X, чем XP, поэтому очевидно, что хардокдинг не является жизнеспособным вариант. Кроме того, я даже не кодировал координаты Y, поэтому, если кто-то щелкнет по правому краю окна, это также вызовет этот код. Итак ... у кого-нибудь есть идеи?