Attribute VB_Name = "SurfUtil" '************************************************ '* SurfUtil.bas * '* * '* By: W-Buffer * '* Web: istudios.virtualave.net/vb/ * '* Mail: wbuffer@hotmail.com * '* * '* Notes: Do whatever you want with this bas * '* (Steal, Copy, Etc.) * '************************************************ Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long Public Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long Public Function LoadImage(Filename As String, DDraw As DirectDraw7) As DirectDrawSurface7 Dim TPict As StdPicture Set TPict = LoadPicture(Filename) Dim SDesc As DDSURFACEDESC2 SDesc.lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH SDesc.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN SDesc.lHeight = CLng((TPict.Height * 0.001) * 567 / Screen.TwipsPerPixelY) SDesc.lWidth = CLng((TPict.Width * 0.001) * 567 / Screen.TwipsPerPixelX) If LCase(Right(Filename, 3)) = "bmp" Then Set LoadImage = DDraw.CreateSurfaceFromFile(Filename, SDesc) Else Set LoadImage = DDraw.CreateSurface(SDesc) Dim SDC As Long, TDC As Long SDC = LoadImage.GetDC TDC = CreateCompatibleDC(0) SelectObject TDC, TPict.Handle BitBlt SDC, 0, 0, SDesc.lWidth, SDesc.lHeight, TDC, 0, 0, vbSrcCopy LoadImage.ReleaseDC SDC DeleteDC TDC End If Set TPict = Nothing End Function Public Function LoadImageStretch(Filename As String, Height As Long, Width As Long, DDraw As DirectDraw7) As DirectDrawSurface7 Dim TPict As New StdPicture Set TPict = LoadPicture(Filename) Dim SDesc As DDSURFACEDESC2 SDesc.lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH SDesc.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN SDesc.lHeight = Height SDesc.lWidth = Width If LCase(Right(Filename, 3)) = "bmp" Then Set LoadImageStretch = DDraw.CreateSurfaceFromFile(Filename, SDesc) Else Set LoadImageStretch = DDraw.CreateSurface(SDesc) Dim SDC As Long, TDC As Long SDC = LoadImageStretch.GetDC TDC = CreateCompatibleDC(0) SelectObject TDC, TPict.Handle StretchBlt SDC, 0, 0, Width, Height, TDC, 0, 0, CLng((TPict.Width * 0.001) * 567 / Screen.TwipsPerPixelX), CLng((TPict.Height * 0.001) * 567 / Screen.TwipsPerPixelY), vbSrcCopy LoadImageStretch.ReleaseDC SDC DeleteDC TDC End If Set TPict = Nothing End Function