【问题标题】:How to add event handler to the desktop window?如何将事件处理程序添加到桌面窗口?
【发布时间】:2012-11-06 07:04:23
【问题描述】:

我正在尝试制作一个程序,该程序将使用鼠标下的颜色值更新另一个窗口文本输入。问题是我不知道我把这张支票WM_MOUSEMOVE放在哪里,因为我自己还没有创建桌面窗口。

我尝试创建自己的 DialogBox 来显示值,但 WM_MOUSEMOVE 只能在该 DialogBox 内工作,而不是在它之外。

【问题讨论】:

  • 您可以随时使用鼠标钩,或类似GetCursorPos
  • 我很想被证明是错误的,但我认为如果你想要从桌面上的任何地方捕获鼠标事件,你可能会不走运。一般来说,鼠标事件只会被光标所在的小部件捕获,就像你的对话框一样。
  • @MattPhillips,鼠标钩子是一种面向事件的方式来跟踪任何地方的鼠标事件。
  • @chris 问题是一旦在对话框之外,即使你用鼠标发疯,也不会触发任何事件。所以,他不能使用 GetCursorPos
  • @KiroConeski, GetCursorPos 必须循环运行。当鼠标操作发生时,钩子会以相同的方式被调用,即使它不是用于您的窗口(如果您使用正确的类型)。

标签: c++ windows winapi dialog window


【解决方案1】:

我不是这方面的专家,但根据我的阅读,您需要收听 WM_INPUT 消息。 为了开始接收该消息,您的应用程序需要注册监听鼠标。

阅读:http://msdn.microsoft.com/en-us/library/windows/desktop/ms645543(v=vs.85).aspx#_win32_Reading_Raw_Input

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2020-06-05
    • 2021-02-26
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多