- Код: Выделить всё
Public Sub DrawFrame( _
ByVal lhDC As Long, _
ByVal Index As Long, _
Optional ByVal x As Long = 0, _
Optional ByVal y As Long = 0, _
Optional ByVal lWidth As Long = -1, _
Optional ByVal lHeight As Long = -1, _
Optional ByVal Transparent As Boolean = False _
)
Dim lpBI As Long
Dim hDCComp As Long
Dim hBmp As Long
Dim hBmpOld As Long
' Prepare parameters:
If (lWidth < 0) Then lWidth = Width
If (lHeight < 0) Then lHeight = Height
Index = Index - 1
' Get the uncompressed frame:
lpBI = AVIStreamGetFrame(ByVal m_pGF, Index)
If (lpBI) Then
If (Transparent) Then
' Create a work dc
hDCComp = CreateCompatibleDC(lhDC)
hBmp = CreateCompatibleBitmap(lhDC, lWidth, lHeight)
hBmpOld = SelectObject(hDCComp, hBmp)
DrawDibDraw m_hDrawDib, hDCComp, 0, 0, _
lWidth, lHeight, ByVal lpBI, ByVal 0&, _
0, 0, -1, -1, 0
DrawTransparent hDCComp, lhDC, x, y, lWidth, lHeight
SelectObject hDCComp, hBmpOld
DeleteObject hBmp
DeleteDC hDCComp
Else
' Draw it directly onto the display:
DrawDibDraw m_hDrawDib, lhDC, x, y, _
lWidth, lHeight, ByVal lpBI, ByVal 0&, _
0, 0, -1, -1, 0
End If
End If
End Sub
Кароче нихера не панимаю, прога сама раскладывает ави файл на кадры вот эта процедурка прорисовывает на сколько я понял в пикчербоксе кадр lhDC - это hDC пикчера, Index - номер кадра, вот, как я понимаю DrawDibDraw собсно и прорисовывает кадр как таковой или нет? и почему когда я через винсок отправляю m_hDrawDib, lpBI и делаю то же самое из другой проги кадр не прорисовывается? ХЭЛП ПЛЗ