Debugger писал(а):Выводить на форму и делать GetDIBit не предлагайте.
pronto писал(а):А драйвер устройства предоставляет диалог «Формат видео»? В котором обычно можно изменить кодировку и глубину цвета?
capDlgVideoFormat = SendMessage(lwnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0)
Debugger писал(а):2. Я ещё раз сделаю capCreateCaptureWindowA, подключусь к тому же драйверу (и попрошу пользователя выбрать другой источник изображения). Будет ли происходить одновременный захват изображений с двух камер для одного приложения через один драйвер?
For some common controls, the default WM_PAINT message processing checks the wParam parameter. If wParam is non-NULL, the control assumes that the value is an HDC and paints using that device context.
Debug.Print SendMessage(lwndC, WM_PAINT, 0, 0)
Debugger писал(а):Это вообще как-то можно сделать?
Debugger писал(а):нарисовать на скрытый PictureBox
For some common controls, the default WM_PAINT message processing checks the wParam parameter. If wParam is non-NULL, the control assumes that the value is an HDC and paints using that device context.
Debugger писал(а):Я хочу отправить моему окну WM_PAINT, передав в wParam hdc моего PictureBox, потому что в этом случае моё окно интерпретирует wParam как хендл устройства, на котором надо рисовать, и нарисует на PictureBox'e нужную мне графику.
Debugger писал(а):Окно не хочет делать то, что мне хочет потому что оно не умеет этого делать. Оно не будет перерисовываться по WM_PAINT. Оно рисуется по внутренним событиям (таймеру).
Debugger писал(а):Я хочу отправить моему окну WM_PAINT, передав в wParam hdc моего PictureBox, потому что в этом случае моё окно интерпретирует wParam как хендл устройства, на котором надо рисовать, и нарисует на Image PictureBox'a нужную мне картинку.
Debugger писал(а):Я хочу отправить моему окну WM_PAINT, передав в wParam hDC моего PictureBox, потому что в этом случае окно интерпретирует wParam как handle контекста устройства, на котором надо рисовать, и нарисует на PictureBox'е (разве не на нём?) нужную мне картинку.
Хакер писал(а):Меня прямо таки раздирает вопрос: неужели ты не понял вышеизложенный текст? Перефразирую: в чём чертов смысл рисовать на скрытом PictureBox-а, если все функции рисования отработают в холостую, не изменив ни одного пиксела в устройстве «дисплей»?
TextOut GetDC(pct.hwnd), 0, 0, "A", 1
TextOut GetWindowDC(pct.hwnd), 10, 0, "B", 1
TextOut pct.hdc, 30, 0, "C", 1
BitBlt Me.hdc, 0, 0, 50, 50, GetDC(pct.hwnd), 0, 0, vbSrcCopy
BitBlt Me.hdc, 50, 0, 50, 50, GetWindowDC(pct.hwnd), 0, 0, vbSrcCopy
BitBlt Me.hdc, 150, 0, 50, 50, pct.hdc, 0, 0, vbSrcCopy
Debugger писал(а):Соответственно, я предполагал, что когда мы пытаемся рисовать на PictureBox'e с Autoredraw=True, мы на самом деле рисуем на некоем буфере, и PB затем использует его для отрисовки себя.
Хакер писал(а):Нет, это AutoRedraw работает только с методами самого PB. Как ты себе представляешь, чтобы GDI-функции, получив хендл контекста устройства-дисплея рисовали не на дисплее, а в каком-то левом буфере?
Debugger писал(а):Буковка "C" выведена не методом PictureBox'a на скрытом PB.
Проведи окном поверх своего PB
А можно моё окно как-то заставить рисоваться в произвольный DC?
Debugger писал(а):Он же невидим.
TextOut GetDC(pct.hwnd), 0, 0, "A", 1
TextOut GetWindowDC(pct.hwnd), 10, 0, "B", 1
TextOut pct.hdc, 30, 0, "C", 1
BitBlt Me.hdc, 0, 0, 50, 50, GetDC(pct.hwnd), 0, 0, vbSrcCopy
BitBlt Me.hdc, 50, 0, 50, 50, GetWindowDC(pct.hwnd), 0, 0, vbSrcCopy
BitBlt Me.hdc, 150, 0, 50, 50, pct.hdc, 0, 0, vbSrcCopy
BitBlt Me.hdc, 150, 0, 50, 50, pct.hdc, 0, 0, vbSrcCopy
рисуешь, когда он скрыт, потом делаешь его видимым, и там буква «C»?
Сейчас этот форум просматривают: AhrefsBot и гости: 84