Open Blinue opened 2 weeks ago
类似于开启开发者模式的消息框,但可以显示在其他窗口上。为了做到这一点,我创建了一个新的 XAML Islands 窗口,它的尺寸为零,每次要显示消息时将它移到对应位置,这个方案可以完美处理 DPI 缩放问题。在一个线程中创建多个 XAML Islands 窗口理论上可行,但据说存在大量的 bug,因此这个新窗口必须创建在独立的线程中。
现在消息框只用于显示错误消息,这可以极大降低使用门槛,免得小白总是开重复的 issue。错误分为两类,一种是缩放的先决条件错误,比如没有正确配置缩放模式、没有权限等,另一种是初始化缩放产生的错误,比如捕获失败等。未来可能还会支持缩放中途产生的错误。
现在 GDI 和 DwmSharedSurface 将检查窗口是否有重定向表面(即没有 WS_EX_NOREDIRECTIONBITMAP 样式),它们无法捕获这样的窗口。过去的行为是黑屏,现在将拒绝缩放并弹出错误消息。
即使添加了这个检查,也不代表成功的时候一定能捕获到窗口内容。
类似于开启开发者模式的消息框,但可以显示在其他窗口上。为了做到这一点,我创建了一个新的 XAML Islands 窗口,它的尺寸为零,每次要显示消息时将它移到对应位置,这个方案可以完美处理 DPI 缩放问题。在一个线程中创建多个 XAML Islands 窗口理论上可行,但据说存在大量的 bug,因此这个新窗口必须创建在独立的线程中。
现在消息框只用于显示错误消息,这可以极大降低使用门槛,免得小白总是开重复的 issue。错误分为两类,一种是缩放的先决条件错误,比如没有正确配置缩放模式、没有权限等,另一种是初始化缩放产生的错误,比如捕获失败等。未来可能还会支持缩放中途产生的错误。