none
判断鼠标是否点击 RRS feed

答案

  • 在鼠标事件中,直接写代码,不就判断是否点击了。

    2009年8月24日 12:00
  • 请您描述详细一些,“在所有窗体之外”表示什么——在当前应用程序的所有窗体之外,还是直接点击“桌面”空白部分,还是?

    理论上,“在所有窗体之外”捕获鼠标点击的说法不正确,任何鼠标消息,一定在某个特定窗口 (广义上的窗口,并非 Windows Form) 上才能处理。如果您的想法是“在所有当前应用程序可见窗体之外捕获鼠标消息”,则可以考虑 Windows Forms 的 Deactivate 事件;您亦可使用 P/Invoke Hook WM_LBUTTONDOWN。

    在当前应用程序的一个鼠标单击事件处理程序中判断鼠标在何处被点击在语义上存在二义性,所以您需要完善您的问题。

    若您需要关于如何处理 WM_LBUTTONDOWN 的信息,请参阅:WndProc() 函数以及 WM_LBUTTONDOWN 的 MSDN 说明。
    Mark Zhou
    2009年8月24日 14:05

全部回复

  • 你好!
         请问你需要在什么场景下判断!
    周雪峰
    2009年8月24日 9:55
    版主
  • 在鼠标事件中,直接写代码,不就判断是否点击了。

    2009年8月24日 12:00
  • 请您描述详细一些,“在所有窗体之外”表示什么——在当前应用程序的所有窗体之外,还是直接点击“桌面”空白部分,还是?

    理论上,“在所有窗体之外”捕获鼠标点击的说法不正确,任何鼠标消息,一定在某个特定窗口 (广义上的窗口,并非 Windows Form) 上才能处理。如果您的想法是“在所有当前应用程序可见窗体之外捕获鼠标消息”,则可以考虑 Windows Forms 的 Deactivate 事件;您亦可使用 P/Invoke Hook WM_LBUTTONDOWN。

    在当前应用程序的一个鼠标单击事件处理程序中判断鼠标在何处被点击在语义上存在二义性,所以您需要完善您的问题。

    若您需要关于如何处理 WM_LBUTTONDOWN 的信息,请参阅:WndProc() 函数以及 WM_LBUTTONDOWN 的 MSDN 说明。
    Mark Zhou
    2009年8月24日 14:05
  • 你好 你可以尝试 使用 System.Windows.Forms.Cursor.Current.Position获得Point对象的实例,然后判断 改Point是否在Form内
    可以通过Form的Location和Size判断
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月25日 5:31
    版主