【问题标题】:Flutter Desktop Ignore Mouse EventsFlutter 桌面忽略鼠标事件
【发布时间】:2021-06-01 21:40:02
【问题描述】:

我希望实现一个 Flutter 桌面应用程序,该应用程序允许一个透明窗口转发所有触摸事件,例如缩放屏幕共享。

我的理解是使用电子可以实现的行为:

mainWindow.setIgnoreMouseEvents(true);

  const el = document.getElementById('clickThroughElement');
  el.addEventListener('mouseenter', () => {
    mainWindow.setIgnoreMouseEvents(true, { forward: true });
  });
  el.addEventListener('mouseleave', () => {
    mainWindow.setIgnoreMouseEvents(false);
  });
};

Flutter Desktop 仍处于 Alpha 阶段,

  1. 这个功能可以吗?
  2. 还有其他方法吗?
  3. 它在功能雷达上吗?

【问题讨论】:

标签: flutter flutter-desktop flutter-design


【解决方案1】:

您需要专门更改本机 C++ 代码

windows\runner\win32_window.cpp

并注释 SetWindowLongPtr() 函数 并添加以下代码

int extendedStyleSettings = GetWindowLong(window,GWL_EXSTYLE);
SetWindowLong(window,GWL_EXSTYLE, extendedStyleSettings | WS_EX_LAYERED | WS_EX_TRANSPARENT);
SetLayeredWindowAttributes(window, 0, 255, LWA_ALPHA);

这个解决方案的问题是我不知道如何取回鼠标事件,因为这个解决方案编辑的是 win32api 窗口,它在运行应用程序的请求和托管颤振视图时启动

【讨论】:

    猜你喜欢
    • 2023-02-14
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 2014-08-27
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多