问题标签 [dwm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
165 浏览

windows - 如何对实时 Windows 7 窗口内容进行 3d 操作?

这基本上是一个范围界定问题,我在哪里可以找到将窗口内容渲染到 3d 表面并对其进行操作的工具?我的意思是我可以有一个程序,比如一个像Vista DWM 的 3d 任务切换器那样在 3d 中合成实时窗口的程序,并且可以将 UI 交互转换回每个窗口的 2d 交互吗?

我在网上到处都看到过关于 DWM 扩展​​的提及,但找不到任何关于它如何工作的资源。还有通过关联两个窗口的 HWND 来实现 DWM 缩略图的指南,但这不允许我在窗口上进行任意转换并且仅显示(您不能单击缩略图中的内容。)

有任何想法吗?

0 投票
0 回答
1021 浏览

winapi - DwmExtendFrameIntoClientArea 和最大化窗口

我正在尝试在客户区构建一个带有玻璃效果的漂亮 GUI。

所以我按照这里的描述实现了它。

我成功了,并且有漂亮的玻璃框架,但只要窗户没有最大化。当我最大化窗口时,它只是黑色:-(

通过一些谷歌搜索和实验,我发现,当我使窗口无效以响应WM_WINDOWPOSCHANGING这样的情况时:

当我最大化窗口时,我也会得到玻璃效果。

现在奇怪的是,这只有在我双击标题栏或窗口右上角的最大化按钮时才有效。但是,如果我将窗口移动到屏幕顶部,让它在那里捕捉以最大化窗口(Aero Snap),窗口就会变成黑色。

有谁知道这是如何正确完成的?

(我正在 Windows 7 64 位下开发。)

编辑:

我还应该提到我想删除标准标题栏,我通过返回0响应WM_NCCALCSIZE消息来做到这一点。没有这个,一切正常。

编辑:

在另一个基本相同的系统上进行的测试是成功的。唯一显着的区别是有另一个显卡,AMD Radeon HD 4300 而不是 AMD Radeon HD 5870。这可能是显卡驱动程序的问题吗?

0 投票
3 回答
1364 浏览

windows-7 - 丢失 Windows 7 透明度 DWM 无法正常工作

从 Microsoft ( http://windows.microsoft.com/hr-HR/windows/downloads/snowflakes-and-frost-theme ) 安装新主题后,我的 Windows 7 失去了所有透明 (Aero) 效果,并将 Windows Basic 作为实际主题。我一直在谷歌上搜索我的问题一个小时,但我还没有找到任何解决方案。我所有解决此问题的尝试都失败了。

  1. 我尝试运行标准向导来解决透明度问题,但得到了回应: 桌面窗口管理器已禁用。 桌面窗口管理器服务一直在运行。我可以在活动进程列表中看到 dwm.exe。我试过停止/启动 DWM 和主题服务,但没有效果。
  2. 我试过运行系统还原,但没有解决问题。
  3. 我一直有 Avast 防病毒软件,并且我已经扫描了磁盘,没有病毒。
  4. 我从 ATI 安装了最新的驱动程序,这也没有帮助。

我只是不知道除了重新安装 Windows 还能做什么(我不会为了获得一些花哨的透明效果而这样做)

0 投票
0 回答
293 浏览

windows - 全屏应用在 Windows Flip 3D 中显示为黑色矩形(按 Win+TAB)

我们有一个可以切换到全屏模式的 DirectX 应用程序。在全屏模式下,按 Win+TAB 会调出 Aero Flip 3D 界面,但应用程序的缩略图是一个黑色矩形。

有趣的是,之前有人问过这个问题,提问者似乎对答案很满意,除了那里链接的 MSDN 文章实际上并没有解释如何将缩略图提供给 Windows 以供 Aero Flip 3D 使用......

0 投票
1 回答
1158 浏览

vb.net - 更改 dwm 着色 - Windows 7

我目前正在尝试在 VB.NET 中编写一个程序,该程序可以流畅地更改 Windows 7 中的 DWM 窗口着色颜色。

我首先尝试直接编辑注册表值,但我不得不重新启动 UXSMS 服务。由于任务栏的切换,此解决方案并不令人满意。

我现在正在寻找一个 DLL 中的函数,例如在设置窗口颜色user32.dllthemecpl.dll可以重现控制面板行为的函数。

我现在在 IDA 上,正在寻找足够的功能(CColorCplPage::SetDwmColorizationColor看起来不错!)。如果有人有,请分享!

(如果有人需要屏幕或代码,请询问。对不起我的英语不好。)

0 投票
1 回答
315 浏览

delphi - 扩展 GlassFrame 的不良视觉行为

我有一个我无法解决的大问题。

我正在编辑问题以简化实际发生的情况:

  1. 创建空白 Delphi 应用程序(我在 2007 年尝试过)

  2. 在表单构造函数 (From.Create) 类型中:

    /li>

这应该扩展 Windows Aero 主题。

现在尝试调整窗口大小,您会注意到不良行为;看起来很丑的黑色部分。

这是Windows错误还是?

我在 MS VC 下尝试过同样的事情,使用 API 调用,但结果是一样的。

无论如何,如果它是 Windows 错误,我必须以某种方式解决它,因为我可以让我的应用程序看起来如此糟糕。

谢谢您的帮助。

0 投票
4 回答
376 浏览

windows - Windows 中是否有任何机制允许系统范围的颜色反转(即夜间模式)?

我最喜欢的 Mac OSX 应用程序之一是 Blacktree 的 Nocturne,它可以反转整个屏幕的颜色,这样您就可以在整个系统范围内得到一个黑白显示,在黑暗的房间里很容易看清。例子。

我去寻找,似乎目前没有办法为 Windows 执行此操作。您可以获得的最接近的要么是大多数应用程序会忽略的黑暗主题(无论如何都不能解决问题 - 请参阅下面我对 Paul 的回答的评论),或者像 F.lux 或 Friendeye 这样的应用程序,它们只会降低亮度和/或更改颜色设置,但我发现没有任何东西可以真正反转整个屏幕的颜色。

所以我的问题是,是否有可能编写一个在 Windows 中执行此操作的应用程序?DWM、NVIDIA 驱动程序或图形子系统的任何其他部分是否有任何 API 允许您在如此基本的级别上操作渲染图像?一个人甚至会在哪里?

0 投票
1 回答
3798 浏览

delphi - 即使激活了 Windows 7 Flip 3D,如何使表单始终位于顶部

我正在构建一个需要始终在顶部显示特定表单的应用程序(这是客户请求),到目前为止,我正在使用具有 HWND_TOPMOST 值的SetWindowPos函数,并且工作正常,但是当 Windows 7 Flip 3D 功能已激活我的应用程序不会保持在顶部。

Windows 7 翻转 3D

在此处输入图像描述

问题是,即使激活了 Windows 7 Flip 3D,我的表单如何保持在所有其他窗口的顶部?

0 投票
3 回答
1833 浏览

c# - 如何将打开的 IE 选项卡显示为 DWM 缩略图?

我正在用 C# 构建一个 WPF 应用程序,我想在列表框中显示打开的 IE 选项卡的缩略图。我实际上是在尝试复制 Windows 7 中的 DWM 功能。

Windows 7 显示打开的 IE 选项卡

我已经弄清楚如何使用 Interop.ShDocVW 枚举打开的选项卡列表,但是为了使用 DWM API 调用,我必须传入一个hwnd,并且这些选项卡都与 Internet Explorer 共享相同的句柄。

所以我一直在搞砸,EnumWindowsEnumChildWindows我什么都做不了。

关于如何最好地解决这个问题的任何建议?

0 投票
1 回答
589 浏览

winapi - 在窗口后面的模糊中清除窗口内容(DWM)

我有一个我调用DwmExtendFrameIntoClientArea()的窗口,该窗口承载其他子窗口,我使用 Direct2D 在其中一个子窗口上进行绘制,当加载一个具有黑色区域的位图时,该区域变得模糊。我希望清除子窗口中的所有内容并在 上重新绘制WM_PAINT,但是我似乎无法清除内容。

  1. 我试图清除它使用

    这会使子窗口区域变黑,它会擦除​​所有以前的绘图,但没有透明度。

  2. 我试图绘制一个位图,它只是客户区上的一个黑条

    这使得之前出现的任何东西都变成了黑色。

  3. 尝试了在整个子窗口上绘制黑色区域的旧 GDI 方法,

    不工作。

  4. 但是,如果我不执行任何这些操作并尝试调整主窗口的大小,它会正常工作,即之前的绘画消失了。

在我再次绘制窗口之前,是否有任何 API 调用或任何方法可以手动清除窗口?