0

我正在寻找实现一个 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. 它在功能雷达上吗?
4

1 回答 1

0

您需要专门更改本机 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 窗口,它在正在运行的应用程序的请求中启动并托管颤动视图

于 2021-09-27T12:36:02.813 回答