问题标签 [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 回答
1525 浏览

c++ - 有什么办法可以修复VC6.0中“DwmEnableBlurBehindWindow”的副作用?

我遇到了 MSDN 主题中提到的一个确切问题:DWM Blur Behind Overview

调用 DwmEnableBlurBehindWindow 后,客户区变成了漂亮的玻璃,但不幸的是,控件(按钮、编辑、静态等)上的所有黑色文本也变得透明,就像MSDN 上的主题一样。

有任何解决这个问题的方法吗?

顺便说一句,我的开发环境是VC++ 6.0,我必须用DrawThemeTextEx API绘制一些发光的文本,所以我不能简单地使用DwmExtendFrameIntoClientArea。我必须使用 DwmEnableBlurBehindWindow 来启用客户区域的玻璃效果。

非常感谢!

2012/6/19 更新:通过使用“SetLayeredWindowAttributes”将窗口的透明键颜色更改为非黑色,然后使用“DwmExtendFrameIntoClientArea”可以解决玻璃窗口上的CONTROLS(BUTTONs,EDITs等)的标题文本问题.

但这样一来,“DrawThemeTextEx”就无法正常工作。看起来 DrawThemeTextEx 只能使用 RGB(0,0,0) 作为其透明键颜色。

那么,是否有任何 API 可以更改“DrawThemeTextEx”中使用的透明键颜色?

我的最终目标是在没有 MSDN 主题中提到的“DwmEnableBlurBehindWindow”副作用的玻璃(Aero)窗口上绘制一些发光的文本:DWM Blur Behind Overview,http://msdn.microsoft.com/en-us/library /aa969537.aspx。如果还有其他方法可以做到,我很高兴听到:)

非常感谢,再次!:)

0 投票
3 回答
630 浏览

c - 在 ANSI C 中使用 WinAPI 和 DWMApi

我有一个关于为 Windows 编写应用程序的问题。在 ANSI C 中编程时,我可以使用 WinAPI 和 DWMApi(航空玻璃、色带等)吗?我现在正在看 MSDN,他们使用 C++。

0 投票
2 回答
217 浏览

c# - 没有玻璃的扩展标题栏

我看到 Windows 7 向导在不需要 Aero Glass 的情况下扩展了标题栏。看这个:

没有航空玻璃

带航空玻璃

我让我的应用程序与 Aero Glass 一起工作,但是没有它怎么办?

提前致谢!

0 投票
1 回答
140 浏览

c# - DWM 消息常量值

我在互联网上搜索,但我找不到我感兴趣的东西......

我试图找到的价值

提前致谢!

0 投票
2 回答
2834 浏览

c - 读出 Thunderbird 未读邮件?(Linux,终端)

我正在为 dwm 构建状态栏,我想通过终端读出未读邮件计数(使用 grep、sed 或 fopen 作为文件)并通过 fopen/popen 获取它。

我正在使用 ubuntu/dwm/thunderbird 16。我认为没有包含未读电子邮件计数的文本文件...

有什么建议么?

0 投票
0 回答
2261 浏览

directx - 禁用 DWM 的窗口模式下的 Direct3D 10 垂直同步问题

在禁用 DWM 的窗口模式下,Direct3D 10 上的 vsync 出现问题。

我们有一个应用程序,它呈现并呈现一些输出。它必须在窗口模式下工作,并且必须至少产生稳定的 60 fps。一个版本的应用程序使用 Direct3D 9 和另一个 Direct3D 10。当我们在窗口模式下工作时,有时我们会降低 fps(它不是​​“稳定”降低。在大多数情况下,我们产生稳定的 60 fps,有时它会突然降低几秒钟,然后恢复到 60 fps)。在这两个版本的应用程序中,fps 降低约为 10-20 fps。这是不可接受的。

在 Windows Vista 和 Windows 7 中,有新的图形系统,称为“桌面合成”,它改变了应用程序在屏幕上显示像素的方式。桌面合成由桌面窗口管理器 (DWM) 执行。您知道,当启用 DWM 时,应用程序会绘制到显存中的屏幕外表面,而不是由 DWM 渲染并在一段时间内呈现在显示器上。因此,我们注意到,当任务管理器中的 dwm.exe 不执行任何操作(处理时间约为 0%)时,我们的 fps 会降低,而当 dwm.exe 占用 1-3% 的处理时间时,会有稳定的 60 fps 并且一切正常好的。

我们无法影响它。因此,我们必须关闭 DWM 才能获得高稳定的 fps。当我们关闭它时,一切正常。两个版本的应用程序都有稳定的 60 fps。但是DWM是在窗口模式下做vsync的,所以当我们关闭它的时候,我们必须自己做vsync。

但是当我们关闭 DWM 时,Direct3D 10 在窗口模式下的 vsync 会出现问题。显示器顶部有图像撕裂。Direc3D 9 一直运行良好。

因此,我们有一台刷新率为 60 Hz 的显示器。

在创建交换链时,我们设置了这样的参数:

在演示时,我们设置了一个标志来打开 vsync:

并有下一个垂直同步问题。有垂直线,从左侧快速移动到右侧。并且显示器顶部有图像撕裂。
http://bit.ly/POQoFq

起初我们认为,我们做错了什么。所以我用旋转立方体安装了微软的示例“Tutorial 07: Texture Mapping and Constant Buffers”。使立方体更大,将其放置得更高,使其旋转更快并遇到相同的问题(见图)。
http://bit.ly/SevNqw
http://bit.ly/RSoEhc
http://bit.ly/UjaNPu

因此,在全屏模式下的 Direct3D 10 上一切正常。垂直同步完美运行。在 Direct3D 9 上也一切正常,在禁用或启用 DWM 的情况下,vsync 效果很好。在禁用 DWM 的窗口模式下的 Direct3D 10 上存在问题。

它在不同的计算机、不同的显卡(Nvidia 8600 GT、Nvidia 9500 GT、ATI Radeon HD 5870 Eyefinity 6)和不同版本的驱动程序上进行了测试。问题稳定重现。我们使用的是 Windows 7。

那么,为什么会出现这样的问题呢?如何解决它以及下一步该怎么做?

UPD1。如果上面的图像不可用,则有一些镜子。

https://dl.dropbox.com/u/20468014/DSC_2287.JPG
https://dl.dropbox.com/u/20468014/DSC_2308.JPG
https://dl.dropbox.com/u/20468014/DSC_2313。 JPG
https://dl.dropbox.com/u/20468014/DSC_2319.JPG

UDP2。我还想注意,我正在创建带有标志 WS_POPUP 的窗口以隐藏标题栏(它必须被隐藏)。图像撕裂出现在不同的地方。它总是在屏幕的顶部,但它可以是 20 像素,也可以是 50 像素。因此,在创建带有标题栏的窗口时,有时图像的顶部可能根本看不到图像撕裂。

0 投票
0 回答
1384 浏览

c++ - 从 System::IntPtr 到 HWND 的 Covnersion

我有以下 C++ 代码:

但是,当我尝试编译时,出现以下错误:

还有其他方法可以获取HWND我的表格吗?

0 投票
1 回答
1560 浏览

c++ - C++ 中的 DwmExtendFrameIntoClientArea

我有以下 C++ 代码:

但是,当我尝试编译时,出现以下错误:

但它不起作用。它不报告任何错误,但它根本不显示正确的结果。

这是我的表单打印屏幕:

在此处输入图像描述

0 投票
1 回答
636 浏览

windows - 如何关闭 DwmExtendFrameIntoClientArea?

调用DwmExtendFrameIntoClientArea窗口后,如何在保持 Aero 模式时再次将其关闭?

我尝试调用 DwmExtendFrameIntoClientArea 并将所有边距设置为 0,这似乎可以部分工作,除了我的窗口客户区的背景全是黑色并显示重绘伪影。

我正在使用Qt,setAttribute(Qt::WA_TranslucentBackground, false)这样做后我调用了我的窗口,但它似乎没有任何效果。重置窗框后如何正确重绘客户区?

0 投票
2 回答
6147 浏览

windows - DwmIsCompositionEnabled 是否仍在 Windows 8 中使用?

根据启用和控制 DWM 组成

注意 从 Windows 8 开始,本节中的信息不再有效。DWM 不能再以编程方式被禁用,也不能在应用程序尝试绘制到主显示表面时被禁用。以下信息仅适用于 Windows 7 和更早的系统。

好的。所以我们不能再以编程方式禁用 DWM。但它仍然可以禁用吗?DwmIsCompositionEnabled在 Windows 8pfEnabled是否始终设置为 TRUE?

如果可以以某种方式禁用合成,那么 DwmIsCompositionEnabled 在任何方面仍然有用吗?