Здравствуйте!! есть такой вот код:
Option Explicit
Private Const BI_RGB = 0&
Private Declare Function GetDIBits Lib "gdi32" (ByVal aHDC As Long, ByVal hBitmap _
As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI _
As BITMAPINFO, ByVal wUsage As Long) As Long
Private Declare Function SetDIBitsToDevice Lib "gdi32" (ByVal hdc As Long, ByVal _
x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As _
Long, ByVal SrcY As Long, ByVal Scan As Long, ByVal NumScans As Long, Bits As _
Any, BitsInfo As BITMAPINFO, ByVal wUsage As Long) As Long
Private Type BITMAPINFOHEADER '40 bytes
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
End Type
Dim f As BITMAPINFO 'структура битмап_инфо хранит _
информацию о копируемом рисунке, 40 байтов
Dim Contain() As Byte 'массив для битов рисунка
Private Type RGBQUAD
rgbBlue As Byte
rgbGreen As Byte
rgbRed As Byte
rgbReserved As Byte
End Type
Private Type BITMAPINFO
bmiHeader As BITMAPINFOHEADER
bmiColors As RGBQUAD
End Type
Private Const DIB_RGB_COLORS = 0
Private Sub Command1_Click()
With f.bmiHeader
.biSize = LenB(f)
.biWidth = ScaleX(Picture1.Picture.Width, vbHimetric, vbPixels)
.biHeight = ScaleY(Picture1.Picture.Width, vbHimetric, vbPixels)
.biPlanes = 1
.biBitCount = 32
.biCompression = 0
.biBitCount = 24
.biCompression = BI_RGB
End With
ReDim Contain(1 To 3, 1 To f.bmiHeader.biWidth, 1 To f.bmiHeader.biHeight) As Byte
Этот код посредством функции GetDIBits копирует картинку из Picture1 на форму. Вопрос состоит в следующем: Допустим имеем видео файл, который проигрывается в Picture1 с помощью MMControl. Потом нажимается пауза и дается команда на отработку вышеизложенного алгоритма. В результате массив Contain() получается забит нулями.. Я так понимаю функции GetDIBits передается hdc именно Picture1.Picture, а как передать ей hdc видео файла??