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

Bra*_*ell 9 c++ windows directx gdi+ gdi

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

我曾尝试研究DirectX是否可以直接绘制到屏幕上,但它似乎不能.我甚至不知道我是否应该研究OpenGL ......?

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

#include <Windows.h>

int main() {
    const HDC dc = GetDC(NULL);
    while (1) {
        Rectangle(dc, 100, 100, 500, 500);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

MrA*_*nno 2

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

无边框窗

相关问题: Windows 8 基于 Metro 应用程序的分层 Windows

如果您想要在 Metro 顶部有一个窗口,您需要它来声明可访问性。