Здравствуйте, Уважаемые!!! Уделите пару минут своего бесценнейшего времени и взгляните на этот незадачливый код. Проблема заключается в том, что с помощью этого кода не удается увидеть изображение. Может обнаружите что-то не то?
...
| Код | Dim bih As BITMAPINFOHEADER Dim bi As BITMAPINFO Dim hbmp As Long Dim BitsMem As Long Dim hMemDib As Long Dim MemLockDib As Long Dim hInst As Long Dim Pic As PicBmp Dim ipic As IPicture Dim IID_IDispatch As GUID Dim lRC As Long Dim bits() As Byte ... hMemDib = ...' дискриптор на область памяти [[BITMAPINFOHEADER (40 bytes) ][Color table (1024 bytes)][Bitmap data (BITMAPINFOHEADER.biSizeImage bytes)]] MemLockDib = GlobalLock(hMemDib) CopyMemory bi, ByVal MemLockDib&, Len(bi) BitsMem = MemLockDib + Len(bi) ReDim bits(bi.bmiHeader.biSizeImage - 1) CopyMemory bits(0), ByVal BitsMem&, bi.bmiHeader.biSizeImage hbmp = CreateBitmap(bi.bmiHeader.biWidth, bi.bmiHeader.biHeight, bi.bmiHeader.biPlanes, _ bi.bmiHeader.biBitCount, bits(0)) If hbmp <> 0 Then IID_IDispatch.Data1 = &H20400 IID_IDispatch.Data4(0) = &HC0 IID_IDispatch.Data4(7) = &H46 Pic.Size = Len(Pic) Pic.Type = vbPicTypeBitmap Pic.hbmp = hbmp Pic.hPal = 0 lRC = OleCreatePictureIndirect(Pic, IID_IDispatch, 1, ipic) If lRC = 0 Then Form3.Picture1 = ipic Set ipic = Nothing Else Call DeleteObject(hbmp) End If Form3.Show End If GlobalFree (hMemDib)
|
...
P.S.: та же область памяти нормально загружается Delphi |