well i checked out the code, and i was able to load a surface with a bitmap, then use the function to copy the surface picture to an stdpicture, and then i was able to save it.
here is the hacked together code i used to create and save the surface. the CopySurfaceToPicture function is a direct copy/paste from the tutorial
. (image1.bmp is a standard windows bitmap 128x64)
Dim pic As New stdole.StdPicture
Dim s As DxVBLib.DirectDrawSurface7
Dim R As DxVBLib.RECT
Dim dd As DirectDraw7
Dim dx As New DirectX7
Set dd = dx.DirectDrawCreate("")
Call dd.SetCooperativeLevel(Me.hWnd, DDSCL_NORMAL)
Dim ddsd As DDSURFACEDESC2
ddsd.lFlags = DDSD_CAPS Or DDSD_WIDTH Or DDSD_HEIGHT
ddsd.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
ddsd.lWidth = 128
ddsd.lHeight = 64
Set s = dd.CreateSurfaceFromFile("x:\image1.bmp", ddsd)
Set pic = CopySurfaceToPicture(s, R)
SavePicture pic, "x:\tempstdpic.bmp"
Edit: i even tried copying a primary surface to the pic and it saved a nice screen capture to disk.