На какой контекст я должен ссылаться, чтобы я мог использовать BitBlt поверх любого приложения или окна? Существует ли «общий» контекст, который относится к отображению?

#winapi #bitblt

Вопрос:

Так что я очень новичок в win32ui, в основном только начинаю. Я когда — то использовал BitBlt с модулем python win32api и, насколько я помню, рисовал поверх дисплея (так что любое приложение-если они открыты) Мне нужно было разобраться с конкретным контекстом. Но моя память туманна относительно того, было ли это просто НУЛЕМ или это был какой-то конкретный контекст? Null, похоже, не работает, поэтому мне интересно, как получить этот общий контекст? Я действительно хочу избежать создания полностью прозрачного окна блокировки.

Комментарии:

1. GetDC(NULL) это то, о чем вы просите. Реальное решение-это то, чего вы пытаетесь избежать: создание прозрачного самого верхнего окна.

2. @IInspectable большое вам спасибо :), не могли бы вы добавить это в ответ, чтобы я мог его принять?

Ответ №1:

API GetDC позволяет получить контекст устройства для любого данного окна. Альтернативно,

Если [ hWnd ] есть NULL , GetDC извлекает DC для всего экрана.

Вы можете использовать контекст устройства для чтения всего экрана надежно (с ограничениями). Однако рендеринг в контексте устройства для окна, которым вы не владеете, не будет надежным. Хотя он не выйдет из строя сразу, владелец окна может перезаписать ваш рендеринг в любой момент. У вас нет возможности даже получить уведомление об этом.

Если вам нужно отобразить изображение в верхней части экрана, вам придется самостоятельно создать самое верхнее (прозрачное) окно и использовать его контекст устройства. Убедитесь, что вы задали вопрос: что, если это сделали две программы?