Многие ноутбуки теперь имеют горячие клавиши FN для изменения громкости, яркости и т.д. и обычно отображают визуальный сигнал, который отображается на экране полностью над операционной системой. Для новых систем Windows 8/8.1 этот визуал даже появляется за пределами рабочего стола на стороне метро. Они не могут рисоваться внутри окна без полей, иначе он не будет отображаться поверх интерфейса метро.
Я попытался выяснить, может ли DirectX напрямую рисовать на экране, но он не кажется, что он может. Я даже не знаю, следует ли мне заглядывать в OpenGL...?
У меня был некоторый успех с использованием GDI; в частности функцию GetDC с параметром NULL для захвата экранного устройства.
#include <Windows.h>
int main() {
const HDC dc = GetDC(NULL);
while (1) {
Rectangle(dc, 100, 100, 500, 500);
}
}
Однако это требует повторного рендеринга всего несколько раз, потому что моя область экрана может быть перезаписана другими окнами, меняющимися в фоновом режиме. И даже при повторном рендеринге в цикле происходит огромное мерцание экрана.
Как это делают OEM-производители этих ноутбуков?
Спасибо.