现在许多笔记本电脑都有 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);
}
}
但是,这需要反复重新渲染所有内容,因为我的屏幕区域可能会被背景中变化的其他窗口覆盖。即使它在循环中重新渲染,也会出现大量的屏幕闪烁。
这些笔记本电脑的 OEM 制造商如何实现这一目标?
谢谢。
最佳答案
看起来这些是无边框的窗口。 例如,查看任务切换器窗口:
相关问题: Windows 8 Layered Windows Over Metro Apps
If you want a window on top of Metro, you need it to declare accessibility.
关于C++ 直接绘制到屏幕上(如叠加),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25025098/