Caption = "In der oberen Listbox werden alle Kommandos eines Meta-Files im Klartext aufgelistet. Zur Demonstration wird dazu bei jedem Paint-Ereignis ein kurzes MetaFile erzeugt um dessen GDI-Kommandos aufzuz
hlen."
FontBold = 0 'False
FontItalic = 0 'False
FontName = "MS Sans Serif"
FontSize = 9.75
FontStrikethru = 0 'False
FontUnderline = 0 'False
Height = 2115
Left = 30
TabIndex = 2
Top = 300
Width = 3345
End
End
Begin CBVBX CBVBX1
CBType = 3 ' 3 - EnumMetaFileProc
Left = 0
Top = 0
End
Option Explicit
Sub CBVBX1_EnumMetaFileProc (hDC As Integer, lpht As Long, lpmr As Long, cObj As Integer, lParam As Long, RetVal As Integer)
Dim mr As METARECORD
Dim s$
Dim i%
TypeAtAdress mr, ByVal lpmr, 4 'Zuerst
nge ermitteln
If mr.rdSize * 2 > Len(mr) Then mr.rdSize = Len(mr) / 2
TypeAtAdress mr, ByVal lpmr, CInt(mr.rdSize * 2)
s$ = " - UNKNOWN - "
Select Case mr.rdFunction
Case META_SETBKCOLOR: s$ = "SetBkColor"
Case META_SETBKMODE: s$ = "SetBkMode"
Case META_SETMAPMODE: s$ = "SetMapMode"
Case META_SETROP2: s$ = "SetROP2"
Case META_SETRELABS: s$ = "SetRelAbs"
Case META_SETPOLYFILLMODE: s$ = "SetPolyFillMode"
Case META_SETSTRETCHBLTMODE: s$ = "SetStretchBltMode"
Case META_SETTEXTCHAREXTRA: s$ = "SetTextCharExtra"
Case META_SETTEXTCOLOR: s$ = "SetTextColor"
Case META_SETTEXTJUSTIFICATION: s$ = "SetTextJustification"
Case META_SETWINDOWORG: s$ = "SetWindowOrg"
Case META_SETWINDOWEXT: s$ = "SetWindowExt"
Case META_SETVIEWPORTORG: s$ = "SetViewportOrg"
Case META_SETVIEWPORTEXT: s$ = "SetViewportExt"
Case META_OFFSETWINDOWORG: s$ = "OffsetWindowOrg"
Case META_SCALEWINDOWEXT: s$ = "ScaleWindowExt"
Case META_OFFSETVIEWPORTORG: s$ = "OffsetViewportOrg"
Case META_SCALEVIEWPORTEXT: s$ = "ScaleViewportOrg"
Case META_LINETO: s$ = "LineTo"
Case META_MOVETO: s$ = "MoveTo"
Case META_EXCLUDECLIPRECT: s$ = "ExcludeClipRect"
Case META_INTERSECTCLIPRECT: s$ = "IntersectClipRect"
Case META_ARC: s$ = "Arc"
Case META_ELLIPSE: s$ = "Ellipse"
Case META_FLOODFILL: s$ = "FloodFill"
Case META_PIE: s$ = "Pie"
Case META_RECTANGLE: s$ = "Rectangle"
Case META_ROUNDRECT: s$ = "Roundrect"
Case META_PATBLT: s$ = "PatBlt"
Case META_SAVEDC: s$ = "SaceDC"
Case META_SETPIXEL: s$ = "SetPixel"
Case META_OFFSETCLIPRGN: s$ = "OffsetClipRgn"
Case META_TEXTOUT: s$ = "TextOut"
Case META_BITBLT: s$ = "BitBlt"
Case META_STRETCHBLT: s$ = "StretchBlt"
Case META_POLYGON: s$ = "PolyGon"
Case META_POLYLINE: s$ = "PolyLine"
Case META_ESCAPE: s$ = "Escape"
Case META_RESTOREDC: s$ = "RestoreDC"
Case META_FILLREGION: s$ = "FillRegion"
Case META_FRAMEREGION: s$ = "FrameRegion"
Case META_INVERTREGION: s$ = "InvertRegion"
Case META_PAINTREGION: s$ = "PaintRegion"
Case META_SELECTCLIPREGION: s$ = "SelectClipRegion"
Case META_SELECTOBJECT: s$ = "SelectObject"
Case META_SETTEXTALIGN: s$ = "SetTextAlign"
Case META_DRAWTEXT: s$ = "DrawText"
Case META_CHORD: s$ = "Chord"
Case META_SETMAPPERFLAGS: s$ = "SetMapperFlags"
Case META_EXTTEXTOUT: s$ = "ExtTextOut"
Case META_SETDIBTODEV: s$ = "SetDIBToDev"
Case META_SELECTPALETTE: s$ = "SelectPalette"
Case META_REALIZEPALETTE: s$ = "RealizePalette"
Case META_ANIMATEPALETTE: s$ = "AnimatePalette"
Case META_SETPALENTRIES: s$ = "SetPaletteEntries"
Case META_POLYPOLYGON: s$ = "PolyPolygon"
Case META_RESIZEPALETTE: s$ = "ResizePalette"
Case META_DIBBITBLT: s$ = "DIBBitBlit"
Case META_DIBSTRETCHBLT: s$ = "DIBStretchBlt"
Case META_DIBCREATEPATTERNBRUSH: s$ = "DIBCreatePatternBrush"
Case META_STRETCHDIB: s$ = "StretchDIB"
'Case META_EXTFLOODFILL: s$ = "ExtFloodFill"
'Case META_RESETDC: s$ = "ResetDC"
'Case META_STARTDOC: s$ = "StartDoc"
'Case META_STARTPAGE: s$ = "StartPage"
'Case META_ENDPAGE: s$ = "EndPage"
'Case META_ABORTDOC: s$ = "AbortDoc"
'Case META_ENDDOC: s$ = "EndDoc"
Case META_DELETEOBJECT: s$ = "DeleteObject"
Case META_CREATEPALETTE: s$ = "CreatePalette"
Case META_CREATEBRUSH: s$ = "CreateBrush"
Case META_CREATEPATTERNBRUSH: s$ = "CreatePatternBrush"
Case META_CREATEPENINDIRECT: s$ = "CreatePenIndirect"
Case META_CREATEFONTINDIRECT: s$ = "CreateFontIndirect"
Case META_CREATEBRUSHINDIRECT: s$ = "CreateBrushIndirect"
Case META_CREATEBITMAPINDIRECT: s$ = "CreateBitmapIndirect"
Case META_CREATEBITMAP: s$ = "CreateBitmap"
Case META_CREATEREGION: s$ = "CreateRegion"
End Select
s$ = s$ + "( "
For i = mr.rdSize * 2 - (4 + 2) To 1 Step -1 'Long und Int Abziehen
s$ = s$ & Asc(Mid$(mr.rdParm, i, 1)) & " " 'Parameter in umgekehrter Reichenfolge