问题标签 [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.
.net - Windows 8 Dwm/Aero - 无边距
我有一个 .NET 2.0 应用程序,它在某些表单上调用 DwmExtendFrameIntoClientArea 以在 MARGINS 结构定义的某些侧面上创建类似玻璃的效果。它在 Windows Vista 和 Windows 7 上按预期工作。但是,在 Windows 8 上(我都尝试了 - 上周发布的 Developer Preview 和 Consumer Preview) - 只有顶部和底部边距可以正确呈现。左边距和右边距被忽略,就好像它们被设置为 0。有谁知道为什么?这是暂时的并且会被修复吗?他们是否更改了 MARGINS 结构的结构/布局?
谢谢。
c# - 可以使用 WM_NCPAINT 并且仍然在 Aero 上获得窗口后面的阴影吗?
SkinManager.EnableFormSkins
目前,我正在尝试在 Windows 窗体中使用自定义框架(使用 DevExpress函数)创建一个顶级窗口,并且在 Windows 7 Aero 上运行时,窗口周围仍然有阴影。
窗口当前如下所示:
我希望它看起来像这样:
(即在窗户周围有一个柔和的阴影)。
我做了很多研究和试错,包括使用CS_DROPSHADOW
、询问 DevExpress 支持、阅读 SO、其他博客和MSDN 文档。
尽管如此,没有什么给我的窗户带来阴影。
尽管我认为我的要求根本无法实现,但我仍然想借此机会在这里问一下。
(我什至想通过在我的实际窗口后面有一个本机 Aero 窗口来伪造这个,但未能实现......)
我的问题是:
是否可以有一个带有自定义绘制的非客户端 (NC) 区域的窗口,并且在 Aero 处于活动状态时仍然在该窗口周围产生阴影?
c++ - 使用带有 Code::Blocks 的 Windows 视觉主题?
这是我在这个网站上的第一篇文章,
无论如何,我最近开始尝试制作一个 win32 应用程序,到目前为止进展顺利。然后我想在我的应用程序中添加 aero(不仅仅是边框)。所以我在网上查了一下,一个教程说我必须包括 dwmapi.h。这是在 Windows SDK 中。我不知道如何将其添加到 Code::Blocks。顺便说一句,我使用 MinGW 作为我的编译器。我还尝试在 Code::Blocks 中使用 MSVC 10 (VS2010) 编译器,但是当我尝试使用它时遇到了一堆错误,与找不到编译器/链接器有关。
任何帮助都会很棒。
c++ - DwmEnableComposition 未启用 Aero
我正在尝试为我的应用程序启用 Aero(一个使用浏览器运行“单进程”的 Firefox 插件),但我没有这样做。操作系统是 Windows 7 64 位。
这是代码:
DwmEnableComposition 应该启用合成,但它没有,该函数也返回:
任何帮助将不胜感激,谢谢!
winapi - 在 MDI 应用程序中使用 ITaskbarlist3,(VC++ - MFC/Win32)
我一直在尝试将 Windows 7 任务栏 API 合并到常规 MFC MDI(多文档界面)应用程序中。我正在使用 Visual Studio 2008,我已将 SDK 路径重定向到使用 Windows 7 SDK。
这个想法是为在应用程序内创建的每个子框架窗口提供自定义实时预览位图。虽然我已经取得了进步,但我正在经历一些挣扎,最终的点点滴滴似乎并不正确。只是想知道我是否遗漏了什么。
好的,
所以我们需要一个代理窗口,因为实时预览 API 只能在顶级窗口上工作(这令人失望)。此窗口处理 WM_DWMSENDICONICTHUMBNAIL 和 WM_DWMSENDICONICLIVEPREVIEWBITMAP,它们为 API 提供缩略图预览和实时预览所需的位图。
/li>函数 CreateBitmapFromHandleAndResize 和 CreateBitmapFromHandle 创建一个 DIB 又名设备独立位图,它是 API DwmSetIconicThumbnail 和 DwmSetIconicLivePreviewBitmap 的食物。
面临的问题:我面临的问题是在以下代码工作的实时预览位图区域中。hBitmap 是一个 32 位深度的 DIB,当它保存在磁盘上时,它似乎是我想要显示的子窗口的正确屏幕截图。但是当我预览它时,不知何故,标题栏和位图似乎与窗口本身的质量不同。事实上,它看起来像是子窗口的失焦表示。我希望显示相同质量的图像,因为用户不应该感觉到差异。
目前,我打印包括框架在内的整个窗口,并将实时预览准确定位在现有窗口的顶部,这样当实时预览打开时,用户会被欺骗看到位图而不是实际的子窗口。
我希望这是实时预览的预期行为。如果我在这里错了,请告诉我。
另一个问题是偏移量。不确定我是否在这里做错了什么。但是当我只是对两个矩形进行比较时,它根本不起作用。8 和 14 的修正系数是通过试错法完成的!
简而言之,我的问题:
无论如何要让位图以与窗口本身相同的质量显示,这样就不会感觉到差异。
偏移量计算是否正确。为什么它不适用于直接的 RECT 差异?
关于 MDI 应用程序中实时预览的行为,我的理解是否正确
在缩略图预览区: MDI 主窗口始终与其他缩略图一起显示。
缩略图是子窗口的单独表示。在实时预览区域: 如果您将鼠标悬停在单个缩略图上,实时预览将始终显示 MDI 主
框架以及子窗口。这里的不同之处在于用户可以看到
特定的子窗口(悬停所在的那个)获得焦点和突出显示。我在这里做的是正确的事情,还是有一些我不知道的其他事情?
提前致谢!兰吉特
ruby - 有没有办法将密钥发送到 Windowmanager
是否有 gem 可以使用 Ruby 将密钥发送到 Windowmanager?我想向窗口管理器发送命令(我使用 dwm)。就像是
或者东西会很棒。
x11 - 如何将 WM 移植到 Wayland?
有没有将现有 WM 从 X11 移植到 Wayland 的示例?例如,将轻量级 WM(例如dwm
、wmii
、awesome
)移植到 Wayland。也许,移植dwm
到 Wayland 就是一个很好的例子。
c++ - OpenGL 闪烁/损坏,窗口调整大小和 DWM 处于活动状态
我有一个 wxWidgets 应用程序,它有许多子 opengl 窗口。我正在使用我自己的 GL 画布类,而不是 wx 类。窗口共享它们的 OpenGL 上下文。我不认为它是 wxwidgets 的事实在这里真的很重要。
opengl 窗口是一个窗口的子窗口,它们是彼此的兄弟窗口,包含在选项卡控件中。一种 MDI 风格的界面,但它不是 MDI 窗口。每个都可以单独调整大小。除非启用 Aero 并且 DWM 处于活动状态,否则一切正常。
调整任何窗口(甚至是 opengl 窗口)的大小会导致所有 opengl 窗口偶尔闪烁,并带有一个陈旧的后备存储视图,其中包含当时屏幕上的任何垃圾,而不是 opengl。这只发生在启用 Aero 的情况下。
我很确定这是 DWM 实际上在其绘图表面后备存储中没有 opengl 内容,并且窗口没有在正确的时刻重新绘制。
我已经尝试了很多方法来解决这个问题,我确实有一个解决方案,但它不是很好,并且涉及将带有 glReadPixels 的帧缓冲区读取到 DIB 中,然后在我的 onPaint 例程中将其传送到绘图 DC。仅当 DWM 处于活动状态时才启用此解决方法,但我宁愿根本不必这样做,因为它会稍微损害性能(但在功能强大的系统上并不算太糟糕 - 场景是相对简单的 3d 图)。也不建议将 GDI 和 opengl 混合使用,但令人惊讶的是,这种方法很有效。我现在可以忍受它,但我宁愿不必。无论如何,如果我想截取子窗口的屏幕截图,我仍然必须在 WM_PRINT 中执行此操作,我看不到解决方法。
有谁知道更好的解决方案?
在有人问之前,我肯定会做以下事情:
- 窗口类有 CS_OWNDC
- WM_ERASEBACKGROUND 什么都不做并返回 TRUE。
- 双缓冲已启用。
- Windows 具有 WS_CLIPSIBLINGS 和 WS_CLIPCHILDREN 窗口样式。
- 在我的 resize 事件处理程序中,我立即重新绘制窗口。
我试过了:
- 在像素格式描述符中设置 PFD_SUPPORT_COMPOSITION。
- 不在绘制处理程序中使用 wxPaintDC 而是调用 ::ValidateRect(hwnd, NULL) 。
- 处理 WM_NCPAINT 并排除客户区
- 通过 DWM API 禁用 NC 绘制
- 在绘制事件中排除客户区
- 在缓冲区交换前后调用 glFlush 和/或 glFinish。
- 在每个绘画事件中使窗口无效(作为测试!) - 仍然闪烁!
- 不使用共享 GL 上下文。
- 禁用双缓冲。
- 写入 GL_FRONT_AND_BACK
禁用 DWM 不是一种选择。
据我所知,如果您在 OpenGL 上使用 Direct3D 而不是这甚至是一个问题,尽管我没有对此进行测试,因为它代表了很多工作。
dwm - dwm 的放置脚本
dwm
dmenu
在(顶部的栏)上提到了不同的屏幕1
2
3
4
...我想编写一个脚本,例如打开 application A
on screen1
和 application B
and C
on screen 2
。
我怎样才能做到这一点?
c# - 有没有办法在 Winforms 中对 MainMenu 进行所有者绘制(或类似的东西)?
我正在尝试为我的应用程序创建一个类似于 Mozilla Firefox 使用的 MainMenu:
这样它就可以显示在航空玻璃上。我可以想出几种方法来做到这一点,但它们会很丑陋,并且可能会因为它们是 hackish 而破坏程序的体验。
我想知道是否有一种方法可以自定义绘制MainMenu
控件,类似于如何覆盖OnPaint
其他控件上的方法(由于某种原因,MainMenu
没有)。或者如果这不可能,我可以使用什么样的hacky方法不会破坏用户体验。
是的,我确信在 WPF 中有一种非常简单的方法可以做到这一点,我希望能够花时间学习它,但是我的应用程序已经处于半成熟阶段,而且它会非常此时切换到不同的 UI 平台不方便。