C ++直接绘制到屏幕上(如叠加层)

时间:2014-07-29 21:14:28

标签: c++ windows directx gdi+ gdi

现在许多笔记本电脑都有FN热键来改变音量,亮度等,并且通常会在屏幕上呈现完全在操作系统上方呈现的视觉提示。对于新的Windows 8 / 8.1系统,这种视觉甚至出现在地铁一侧的桌面之外。它们不能在无边界窗口内绘制,否则它不会出现在地铁界面上。

我已经尝试过研究DirectX是否可以直接绘制到屏幕上但它似乎没有显示出来。我甚至都不知道我是否应该研究一下OpenGL ......?

我使用GDI 取得了一些成功;特别是带参数NULL的GetDC函数来抓取屏幕设备。

#include <Windows.h>

int main() {
    const HDC dc = GetDC(NULL);
    while (1) {
        Rectangle(dc, 100, 100, 500, 500);
    }
}

但是,这需要重复渲染所有内容,因为我的屏幕区域可能会被后台更改的其他窗口覆盖。即使它在循环中重新渲染,也会出现大量的屏幕闪烁。

这些笔记本电脑的OEM制造商如何实现这一目标?

感谢。

1 个答案:

答案 0 :(得分:1)

看起来这些是无边框的窗户。 例如,查看任务切换器窗口:

Borderless Window

相关问题: Windows 8 Layered Windows Over Metro Apps

  

如果您想要一个位于Metro之上的窗口,则需要它来声明可访问性。