c++ - 应用程序可以吸收鼠标点击(即使它没有聚焦)吗?

标签 c++ operating-system mouseevent mouse sfml

我正在使用SFML检测鼠标点击。
用于检测点击发生位置的基本包装器可能如下所示:

sf::Vector2i Block_Until_Mouse_Click(){

    static bool pressed=false;
    sf::Vector2i position;
    while (true){

      if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
      {
          if (!pressed){
            position = sf::Mouse::getPosition();
            pressed=true;
            break;
          }
      }
      else{
        pressed = false;
      }   
    }

    return position;
}

这允许每次单击鼠标时打印坐标:

while (true){
  auto position = Block_Until_Mouse_Click();
  std::cout << position.x << " " << position.y << '\n';
}

应用程序是否可以吸收这些鼠标点击,
没有点击有任何影响?

例如,如果我打开了一个绘图程序,并且将这个“鼠标点击吸收”程序最小化,是否可以在 Canvas 上单击而无法绘制任何内容,但仍然保留“鼠标点击吸收”程序记录的坐标单击“吸收”程序?


我不确定这是否需要更改操作系统、更改设备/驱动程序,或者是否可以通过代码来实现。是否有提供此类功能的常用软件实现?

最佳答案

Is it possible for the application to absorb these mouse clicks, without the click having any affect?

对于 SFML,不会。也许使用操作系统功能,具体取决于操作系统。

在 OS X 上,有一个名为 Grab 的屏幕捕获程序可以执行此操作。如何? Apple 尚未发布软件源代码(据我所知),所以我无法确定。

我对 Windows 和 Linux 不太熟悉,无法回答这个问题。

关于c++ - 应用程序可以吸收鼠标点击(即使它没有聚焦)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35776941/

相关文章:

c++ - 如何在 C++ 中打开文件而不删除其内容且不附加它?

Java 球对象不会像预期的那样从绘制的矩形反弹。

java - 适合初学者的简单 8 车游戏

c++ - 这个数组大小模板是如何工作的?

javascript - 跨操作系统平台的路径分隔符

c++ - 使用枚举的一些很好的例子

operating-system - 操作系统中的中断处理程序

javascript - div 正在阻止鼠标事件

c++ - 具有虚拟继承的类的大小

c++ - 为什么调用 vector.reserve(required + 1) 比 vector.reserve(required) 快?