代码之家  ›  专栏  ›  技术社区  ›  BFree

如何获得窗口中“X”按钮的坐标?

  •  0
  • BFree  · 技术社区  · 16 年前

    出于某种原因,我需要检测用户何时真正点击了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);
        }
    

    我的问题是,如何判断这些坐标是否在X按钮上。现在,我硬编码680,因为这是在当前窗口大小下工作的(它不太大),但问题是我使用的是Windows7,它有比XP更大的X按钮,所以显然硬编码不是一个可行的选择。此外,我甚至没有为Y坐标编码,所以如果有人点击窗口的右边缘,也会触发该代码。所以。。。有人有什么想法吗?

    2 回复  |  直到 16 年前
        1
  •  3
  •   Meta-Knight    16 年前

    编辑:

    您可以在单击按钮时更改窗体的DialogResult属性,而不是使用全局布尔值。我不确定什么是DialogResult值,当你点击X按钮时,你必须试试。

        2
  •  0
  •   Gibsnag    16 年前

    如果您测试WM_NCHITTEST消息,该消息应该告诉您鼠标何时悬停在关闭按钮上。

    推荐文章