' Device context object control and configuration class
' Copyright (c) 1996 by Desaware Inc.
' Part of the Desaware API Classes Library
' These flags will activate certain functions that require
' classes that most functions do not need. If you do not
' need to use a function that is triggered by a flag, you
' can set the flag to False, and prevent an unneeded class
' from being loaded.
#Const FlagBitmap = True ' uses dwBitmap
#Const FlagGetDeviceCaps = True ' uses dwDevCaps
#Const FlagPlayEnhMetaFileRecord = True ' uses dwHandleTable and dwEnhMetaRecord
#Const FlagMetaFile = True ' all functions that use dwMetafile
' A number of functions require a group of data in a single
' parameter. This task is traditionally handled by an array.
' Visual Basic 4.0 has a new data type called a Collection.
' This class library uses Collections, but if you prefer
' arrays, or your program uses arrays extensivly, then setting
' this flag to True will switch those functions to their
' array-using equivalents.
#Const FlagUseArrayNotCollection = False
#If Win32 Then
Private iHDC As Long
#Else
Private iHDC As Integer
#End If
' Who owns this DC?
' 0 - This DC is via GetDC
' 1 - This DC is via CreateDC or CreateCompatibleDC
' 2 - This DC is via direct setting
' 3 - This DC is a regular metafile
' 4 - This DC is an enhanced metafile
Public DCsource%
Public DeviceCaps As New dwDevCaps
' Currently selected objects
Private iCurrentBrush As dwBrush
Private iCurrentPen As dwPen
Private OriginalBrush As Long
Private OriginalPen As Long
#If FlagBitmap Then
Private OriginalBitmap As Long
Private iCurrentBitmap As dwBitmap
#End If
' InitialSaveDC - On assign or GetDC we do an initial SaveDC
' to store original VB state. This also makes sure
' all objects are selected out when we delete/destroy the DC
Private InitialSaveDC As Long
' Which window (if any) owns this device context?
Private objwnd As dwWindow
'** Functions Chapter 7 Index
#If Win32 Then
Private Declare Function apiCreateCompatibleDC& Lib "gdi32" Alias "CreateCompatibleDC" (ByVal hDC As Long)
Private Declare Function apiCreateDC& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As DEVMODE)
Private Declare Function apiCreateDCByVal& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, ByVal lpInitData As Long)
Private Declare Function apiCreateDCBynum& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As Long)
Private Declare Function apiDeleteDC& Lib "gdi32" Alias "DeleteDC" (ByVal hDC As Long)
Private Declare Function apiDPtoLP& Lib "gdi32" Alias "DPtoLP" (ByVal hDC As Long, lpPoint As POINTAPI, ByVal nCount As Long)
Private Declare Function apiExcludeClipRect& Lib "gdi32" Alias "ExcludeClipRect" (ByVal hDC As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long)
Private Declare Function apiExcludeUpdateRgn& Lib "user32" Alias "ExcludeUpdateRgn" (ByVal hDC As Long, ByVal hwnd As Long)
Private Declare Function apiExtSelectClipRgn& Lib "gdi32" Alias "ExtSelectClipRgn" (ByVal hDC As Long, ByVal hRgn As Long, ByVal fnMode As Long)
Private Declare Function apiFillRgn& Lib "gdi32" Alias "FillRgn" (ByVal hDC As Long, ByVal hRgn As Long, ByVal hBrush As Long)
Private Declare Function apiFrameRgn& Lib "gdi32" Alias "FrameRgn" (ByVal hDC As Long, ByVal hRgn As Long, ByVal hBrush As Long, ByVal nWidth As Long, ByVal nHeight As Long)
Private Declare Function apiGetBoundsRect& Lib "gdi32" Alias "GetBoundsRect" (ByVal hDC As Long, lprcBounds As RECT, ByVal Flags As Long)
Private Declare Function apiGetClipBox& Lib "gdi32" Alias "GetClipBox" (ByVal hDC As Long, lpRect As RECT)
Private Declare Function apiGetClipRgn& Lib "gdi32" Alias "GetClipRgn" (ByVal hDC As Long, ByVal hRgn As Long)
Private Declare Function apiGetDCOrgEx& Lib "gdi32" Alias "GetDCOrgEx" (ByVal hDC As Long, lpPoint As POINTAPI)
Private Declare Function apiGetDeviceCaps& Lib "gdi32" Alias "GetDeviceCaps" (ByVal hDC As Long, ByVal nIndex As Long)
Private Declare Function apiGetMapMode& Lib "gdi32" Alias "GetMapMode" (ByVal hDC As Long)
Private Declare Function apiGetRgnBox& Lib "gdi32" Alias "GetRgnBox" (ByVal hRgn As Long, lpRect As RECT)
Private Declare Function apiGetUpdateRgn& Lib "user32" Alias "GetUpdateRgn" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal fErase As Long)
Private Declare Function apiGetViewportExtEx& Lib "gdi32" Alias "GetViewportExtEx" (ByVal hDC As Long, lpSize As SIZE)
Private Declare Function apiGetViewportOrgEx& Lib "gdi32" Alias "GetViewportOrgEx" (ByVal hDC As Long, lpPoint As POINTAPI)
Private Declare Function apiGetWindowDC& Lib "user32" Alias "GetWindowDC" (ByVal hwnd As Long)
Private Declare Function apiGetWindowExtEx& Lib "gdi32" Alias "GetWindowExtEx" (ByVal hDC As Long, lpSize As SIZE)
Private Declare Function apiGetWindowOrgEx& Lib "gdi32" Alias "GetWindowOrgEx" (ByVal hDC As Long, lpPoint As POINTAPI)
Private Declare Function apiIntersectClipRect& Lib "gdi32" Alias "IntersectClipRect" (ByVal hDC As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long)
Private Declare Function apiInvertRgn& Lib "gdi32" Alias "InvertRgn" (ByVal hDC As Long, ByVal hRgn As Long)
Private Declare Function apiLPtoDP& Lib "gdi32" Alias "LPtoDP" (ByVal hDC As Long, lpPoint As POINTAPI, ByVal nCount As Long)
Private Declare Function apiOffsetClipRgn& Lib "gdi32" Alias "OffsetClipRgn" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long)
Private Declare Function apiOffsetViewportOrgEx& Lib "gdi32" Alias "OffsetViewportOrgEx" (ByVal hDC As Long, ByVal nX As Long, ByVal nY As Long, lpPoint As POINTAPI)
Private Declare Function apiOffsetWindowOrgEx& Lib "gdi32" Alias "OffsetWindowOrgEx" (ByVal hDC As Long, ByVal nX As Long, ByVal nY As Long, lpPoint As POINTAPI)
Private Declare Function apiPaintRgn& Lib "gdi32" Alias "PaintRgn" (ByVal hDC As Long, ByVal hRgn As Long)
Private Declare Function apiPtVisible& Lib "gdi32" Alias "PtVisible" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long)
Private Declare Function apiRectVisible& Lib "gdi32" Alias "RectVisible" (ByVal hDC As Long, lpRect As RECT)
Private Declare Function apiRestoreDC& Lib "gdi32" Alias "RestoreDC" (ByVal hDC As Long, ByVal nSavedDC As Long)
Private Declare Function apiSaveDC& Lib "gdi32" Alias "SaveDC" (ByVal hDC As Long)
Private Declare Function apiScaleViewportExtEx& Lib "gdi32" Alias "ScaleViewportExtEx" (ByVal hDC As Long, ByVal nXnum As Long, ByVal nXdenom As Long, ByVal nYnum As Long, ByVal nYdenom As Long, lpSize As SIZE)
Private Declare Function apiScaleWindowExtEx& Lib "gdi32" Alias "ScaleWindowExtEx" (ByVal hDC As Long, ByVal nXnum As Long, ByVal nXdenom As Long, ByVal nYnum As Long, ByVal nYdenom As Long, lpSize As SIZE)
Private Declare Function apiScrollDC& Lib "user32" Alias "ScrollDC" (ByVal hDC As Long, ByVal dx As Long, ByVal dy As Long, lprcScroll As RECT, lprcClip As RECT, ByVal hRgnUpdate As Long, lprcUpdate As RECT)
Private Declare Function apiSelectClipRgn& Lib "gdi32" Alias "SelectClipRgn" (ByVal hDC As Long, ByVal hRgn As Long)
Private Declare Function apiSetBoundsRect& Lib "gdi32" Alias "SetBoundsRect" (ByVal hDC As Long, lprcBounds As RECT, ByVal Flags As Long)
Private Declare Function apiSetMapMode& Lib "gdi32" Alias "SetMapMode" (ByVal hDC As Long, ByVal nMapMode As Long)
Private Declare Function apiSetViewportExtEx& Lib "gdi32" Alias "SetViewportExtEx" (ByVal hDC As Long, ByVal nX As Long, ByVal nY As Long, lpSize As SIZE)
Private Declare Function apiSetViewportOrgEx& Lib "gdi32" Alias "SetViewportOrgEx" (ByVal hDC As Long, ByVal nX As Long, ByVal nY As Long, lpPoint As POINTAPI)
Private Declare Function apiSetWindowExtEx& Lib "gdi32" Alias "SetWindowExtEx" (ByVal hDC As Long, ByVal nX As Long, ByVal nY As Long, lpSize As SIZE)
Private Declare Function apiSetWindowOrgEx& Lib "gdi32" Alias "SetWindowOrgEx" (ByVal hDC As Long, ByVal nX As Long, ByVal nY As Long, lpPoint As POINTAPI)
Private Declare Function apiWindowFromDC& Lib "user32" Alias "WindowFromDC" (ByVal hDC As Long)
#Else
Private Declare Function apiCreateCompatibleDC% Lib "gdi" Alias "CreateCompatibleDC" (ByVal hDC As Integer)
Private Declare Function apiCreateDC% Lib "gdi" Alias "CreateDC" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, ByVal lpInitData As Long)
Private Declare Function apiCreateDCByVal% Lib "gdi" Alias "CreateDC" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, ByVal lpInitData As Long)
Private Declare Function apiDeleteDC% Lib "gdi" Alias "DeleteDC" (ByVal hDC As Integer)
Private Declare Function apiDPtoLP% Lib "gdi" Alias "DPtoLP" (ByVal hDC As Integer, lpPoints As POINTAPI, ByVal nCount As Integer)
Private Declare Function apiExcludeClipRect% Lib "gdi" Alias "ExcludeClipRect" (ByVal hDC As Integer, ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer)
Private Declare Function apiExcludeUpdateRgn% Lib "user" Alias "ExcludeUpdateRgn" (ByVal hDC As Integer, ByVal hwnd As Integer)
'Function ExtSelectClipRgn is not available in the WIN16 API.
Private Declare Function apiFillRgn% Lib "gdi" Alias "FillRgn" (ByVal hDC As Integer, ByVal hRgn As Integer, ByVal hBrush As Integer)
Private Declare Function apiFrameRgn% Lib "gdi" Alias "FrameRgn" (ByVal hDC As Integer, ByVal hRgn As Integer, ByVal hBrush As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer)
Private Declare Function apiGetBoundsRect% Lib "gdi" Alias "GetBoundsRect" (ByVal hDC As Integer, lprcBounds As RECT, ByVal Flags As Integer)
Private Declare Function apiGetClipBox% Lib "gdi" Alias "GetClipBox" (ByVal hDC As Integer, lpRect As RECT)
'Function GetClipRgn is not available in the WIN16 API.
'Function GetDCOrgEx is not available in the WIN16 API.
Private Declare Function apiGetDeviceCaps% Lib "gdi" Alias "GetDeviceCaps" (ByVal hDC As Integer, ByVal nIndex As Integer)
Private Declare Function apiGetMapMode% Lib "gdi" Alias "GetMapMode" (ByVal hDC As Integer)
Private Declare Function apiGetRgnBox% Lib "gdi" Alias "GetRgnBox" (ByVal hRgn As Integer, lpRect As RECT)
Private Declare Function apiGetUpdateRgn% Lib "user" Alias "GetUpdateRgn" (ByVal hwnd As Integer, ByVal hRgn As Integer, ByVal fErase As Integer)
Private Declare Function apiGetViewportExtEx% Lib "gdi" Alias "GetViewportExtEx" (ByVal hDC As Integer, lpSize As SIZE)
Private Declare Function apiGetViewportOrgEx% Lib "gdi" Alias "GetViewportOrgEx" (ByVal hDC As Integer, lpSize As SIZE)
Private Declare Function apiGetWindowDC% Lib "user" Alias "GetWindowDC" (ByVal hwnd As Integer)
Private Declare Function apiGetWindowExtEx% Lib "gdi" Alias "GetWindowExtEx" (ByVal hDC As Integer, lpSize As SIZE)
Private Declare Function apiGetWindowOrgEx% Lib "gdi" Alias "GetWindowOrgEx" (ByVal hDC As Integer, lpSize As SIZE)
Private Declare Function apiIntersectClipRect% Lib "gdi" Alias "IntersectClipRect" (ByVal hDC As Integer, ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer)
Private Declare Function apiInvertRgn% Lib "gdi" Alias "InvertRgn" (ByVal hDC As Integer, ByVal hRgn As Integer)
Private Declare Function apiLPtoDP% Lib "gdi" Alias "LPtoDP" (ByVal hDC As Integer, lpPoints As POINTAPI, ByVal nCount As Integer)
Private Declare Function apiOffsetClipRgn% Lib "gdi" Alias "OffsetClipRgn" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer)
Private Declare Function apiOffsetViewportOrgEx% Lib "gdi" Alias "OffsetViewportOrgEx" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer, lpPoint As POINTAPI)
Private Declare Function apiOffsetWindowOrgEx% Lib "gdi" Alias "OffsetWindowOrgEx" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer, lpPoint As POINTAPI)
Private Declare Function apiPaintRgn% Lib "gdi" Alias "PaintRgn" (ByVal hDC As Integer, ByVal hRgn As Integer)
Private Declare Function apiPtVisible% Lib "gdi" Alias "PtVisible" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer)
Private Declare Function apiRectVisible% Lib "gdi" Alias "RectVisible" (ByVal hDC As Integer, lpRect As RECT)
Private Declare Function apiRestoreDC% Lib "gdi" Alias "RestoreDC" (ByVal hDC As Integer, ByVal nSavedDC As Integer)
Private Declare Function apiSaveDC% Lib "gdi" Alias "SaveDC" (ByVal hDC As Integer)
Private Declare Function apiScaleViewportExtEx& Lib "gdi" Alias "ScaleViewportExtEx" (ByVal hDC As Integer, ByVal nXnum As Integer, ByVal nXdenom As Integer, ByVal nYnum As Integer, ByVal nYdenom As Integer, lpSize As SIZE)
Private Declare Function apiScaleWindowExtEx& Lib "gdi" Alias "ScaleWindowExtEx" (ByVal hDC As Integer, ByVal nXnum As Integer, ByVal nXdenom As Integer, ByVal nYnum As Integer, ByVal nYdenom As Integer, lpSize As SIZE)
Private Declare Function apiScrollDC% Lib "user" Alias "ScrollDC" (ByVal hDC As Integer, ByVal dx As Integer, ByVal dy As Integer, lprcScroll As RECT, lprcClip As RECT, ByVal hRgnUpdate As Integer, lprcUpdate As RECT)
Private Declare Function apiSelectClipRgn% Lib "gdi" Alias "SelectClipRgn" (ByVal hDC As Integer, ByVal hRgn As Integer)
Private Declare Function apiSetBoundsRect% Lib "gdi" Alias "SetBoundsRect" (ByVal hDC As Integer, lprcBounds As RECT, ByVal Flags As Integer)
Private Declare Function apiSetMapMode% Lib "gdi" Alias "SetMapMode" (ByVal hDC As Integer, ByVal nMapMode As Integer)
Private Declare Function apiSetViewportExtEx% Lib "gdi" Alias "SetViewportExtEx" (ByVal hDC As Integer, ByVal nX As Integer, ByVal nY As Integer, lpSize As SIZE)
Private Declare Function apiSetViewportOrgEx% Lib "gdi" Alias "SetViewportOrgEx" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer, lpSize As SIZE)
Private Declare Function apiSetWindowExtEx% Lib "gdi" Alias "SetWindowExtEx" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer, lpSize As SIZE)
Private Declare Function apiSetWindowOrgEx% Lib "gdi" Alias "SetWindowOrgEx" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer, lpSize As SIZE)
'Function WindowFromDC is not available in the WIN16 API.
#End If 'WIN32
'**Functions Chapter 8 Reference
#If Win32 Then
Private Declare Function apiDrawEdge& Lib "user32" Alias "DrawEdge" (ByVal hDC As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long)
Private Declare Function apiGetBrushOrgEx& Lib "gdi32" Alias "GetBrushOrgEx" (ByVal hDC As Long, lpPoint As POINTAPI)
Private Declare Function apiPaintDesktop Lib "user32" Alias "PaintDesktop" (ByVal hDC As Long)
Private Declare Function apiSelectClipPath& Lib "gdi32" Alias "SelectClipPath" (ByVal hDC As Long, ByVal iMode As Long)
Private Declare Function apiAbortPath& Lib "gdi32" Alias "AbortPath" (ByVal hDC As Long)
Private Declare Function apiAngleArc& Lib "gdi32" Alias "AngleArc" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal dwRadius As Long, ByVal eStartAngle As Double, ByVal eSweepAngle As Double)
Private Declare Function apiArc& Lib "gdi32" Alias "Arc" (ByVal hDC As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long)
Private Declare Function apiArcTo& Lib "gdi32" Alias "ArcTo" (ByVal hDC As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long)
Private Declare Function apiBeginPath& Lib "gdi32" Alias "BeginPath" (ByVal hDC As Long)
Private Declare Function apiCancelDC& Lib "gdi32" Alias "CancelDC" (ByVal hDC As Long)
Private Declare Function apiChord& Lib "gdi32" Alias "Chord" (ByVal hDC As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long)
Private Declare Function apiCloseEnhMetaFile& Lib "gdi32" Alias "CloseEnhMetaFile" (ByVal hDC As Long)
Private Declare Function apiCloseMetaFile& Lib "gdi32" Alias "CloseMetaFile" (ByVal hMF As Long)
Private Declare Function apiCloseFigure& Lib "gdi32" Alias "CloseFigure" (ByVal hDC As Long)
Private Declare Function apiCopyEnhMetaFile& Lib "gdi32" Alias "CopyEnhMetaFileA" (ByVal hemfSrc As Long, ByVal lpszFile As String)
Private Declare Function apiCreateEnhMetaFile& Lib "gdi32" Alias "CreateEnhMetaFileA" (ByVal hdcRef As Long, ByVal lpFileName As String, lpRect As RECT, ByVal lpDescription As String)
Private Declare Function apiDeleteEnhMetaFile& Lib "gdi32" Alias "DeleteEnhMetaFile" (ByVal hemf As Long)
Private Declare Function apiDeleteMetaFile& Lib "gdi32" Alias "DeleteMetaFile" (ByVal hMF As Long)
Private Declare Function apiDeleteObject& Lib "gdi32" Alias "DeleteObject" (ByVal hObject As Long)
Private Declare Function apiDrawEscape& Lib "gdi32" Alias "DrawEscape" (ByVal hDC As Long, ByVal nEscape As Long, ByVal cbInput As Long, ByVal lpszInData As String)
Private Declare Function apiDrawFocusRect& Lib "user32" Alias "DrawFocusRect" (ByVal hDC As Long, lpRect As RECT)
Private Declare Function apiEllipse& Lib "gdi32" Alias "Ellipse" (ByVal hDC As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long)
Private Declare Function apiEndPath& Lib "gdi32" Alias "EndPath" (ByVal hDC As Long)
Private Declare Function apiExtFloodFill& Lib "gdi32" Alias "ExtFloodFill" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal wFillType As Long)
Private Declare Function apiFillPath& Lib "gdi32" Alias "FillPath" (ByVal hDC As Long)
Private Declare Function apiFillRect& Lib "user32" Alias "FillRect" (ByVal hDC As Long, lpRect As RECT, ByVal hBrush As Long)
Private Declare Function apiFlattenPath& Lib "gdi32" Alias "FlattenPath" (ByVal hDC As Long)
Private Declare Function apiFloodFill& Lib "gdi32" Alias "FloodFill" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long)
Private Declare Function apiFrameRect& Lib "user32" Alias "FrameRect" (ByVal hDC As Long, lpRect As RECT, ByVal hBrush As Long)
Private Declare Function apiGdiComment& Lib "gdi32" Alias "GdiComment" (ByVal hDC As Long, ByVal cbSize As Long, lpData As Byte)
Private Declare Function apiGetArcDirection& Lib "gdi32" Alias "GetArcDirection" (ByVal hDC As Long)
Private Declare Function apiGetBkColor& Lib "gdi32" Alias "GetBkColor" (ByVal hDC As Long)
Private Declare Function apiGetBkMode& Lib "gdi32" Alias "GetBkMode" (ByVal hDC As Long)
Private Declare Function apiGetCurrentPositionEx& Lib "gdi32" Alias "GetCurrentPositionEx" (ByVal hDC As Long, lpPoint As POINTAPI)
Private Declare Function apiGetMiterLimit& Lib "gdi32" Alias "GetMiterLimit" (ByVal hDC As Long, peLimit As Single)
Private Declare Function apiGetNearestColor& Lib "gdi32" Alias "GetNearestColor" (ByVal hDC As Long, ByVal crColor As Long)
Private Declare Function apiGetPath& Lib "gdi32" Alias "GetPath" (ByVal hDC As Long, lpPoint As POINTAPI, lpTypes As Byte, ByVal nSize As Long)
Private Declare Function apiGetPixel& Lib "gdi32" Alias "GetPixel" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long)
Private Declare Function apiGetPolyFillMode& Lib "gdi32" Alias "GetPolyFillMode" (ByVal hDC As Long)
Private Declare Function apiGetROP2& Lib "gdi32" Alias "GetROP2" (ByVal hDC As Long)
Private Declare Function apiInvertRect& Lib "user32" Alias "InvertRect" (ByVal hDC As Long, lpRect As RECT)
Private Declare Function apiLineTo& Lib "gdi32" Alias "LineTo" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long)
Private Declare Function apiMoveToEx& Lib "gdi32" Alias "MoveToEx" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI)
Private Declare Function apiPathToRegion& Lib "gdi32" Alias "PathToRegion" (ByVal hDC As Long)
Private Declare Function apiPie& Lib "gdi32" Alias "Pie" (ByVal hDC As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long)
Private Declare Function apiPlayEnhMetaFile& Lib "gdi32" Alias "PlayEnhMetaFile" (ByVal hDC As Long, ByVal hemf As Long, lpRect As RECT)
Private Declare Function apiPlayEnhMetaFileRecord& Lib "gdi32" Alias "PlayEnhMetaFileRecord" (ByVal hDC As Long, lpHandleTable As HANDLETABLE, lpEnhMetaRecord As ENHMETARECORD, ByVal nHandles As Long)
Private Declare Function apiPlayMetaFile& Lib "gdi32" Alias "PlayMetaFile" (ByVal hDC As Long, ByVal hMF As Long)
Private Declare Function apiPolyBezier& Lib "gdi32" Alias "PolyBezier" (ByVal hDC As Long, lppt As POINTAPI, ByVal cPoints As Long)
Private Declare Function apiPolyBezierTo& Lib "gdi32" Alias "PolyBezierTo" (ByVal hDC As Long, lppt As POINTAPI, ByVal cCount As Long)
Private Declare Function apiPolyDraw& Lib "gdi32" Alias "PolyDraw" (ByVal hDC As Long, lppt As POINTAPI, lpbTypes As Byte, ByVal cCount As Long)
Private Declare Function apiPolygon& Lib "gdi32" Alias "Polygon" (ByVal hDC As Long, lpPoint As POINTAPI, ByVal nCount As Long)
Private Declare Function apiPolyline& Lib "gdi32" Alias "Polyline" (ByVal hDC As Long, lpPoint As POINTAPI, ByVal nCount As Long)
Private Declare Function apiPolylineTo& Lib "gdi32" Alias "PolylineTo" (ByVal hDC As Long, lppt As POINTAPI, ByVal cCount As Long)
Private Declare Function apiPolyPolyline& Lib "gdi32" Alias "PolyPolyline" (ByVal hDC As Long, lppt As POINTAPI, lpdwPolyPoints As Long, ByVal cCount As Long)
Private Declare Function apiRectangle& Lib "gdi32" Alias "Rectangle" (ByVal hDC As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long)
Private Declare Function apiRoundRect& Lib "gdi32" Alias "RoundRect" (ByVal hDC As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long, ByVal X3 As Long, ByVal Y3 As Long)
Private Declare Function apiSetBkColor& Lib "gdi32" Alias "SetBkColor" (ByVal hDC As Long, ByVal crColor As Long)
Private Declare Function apiSetArcDirection& Lib "gdi32" Alias "SetArcDirection" (ByVal hDC As Long, ByVal ArcDirection As Long)
Private Declare Function apiSetBkMode& Lib "gdi32" Alias "SetBkMode" (ByVal hDC As Long, ByVal nBkMode As Long)
Private Declare Function apiSetBrushOrgEx& Lib "gdi32" Alias "SetBrushOrgEx" (ByVal hDC As Long, ByVal nXOrg As Long, ByVal nYOrg As Long, lppt As POINTAPI)
Private Declare Function apiSetMiterLimit& Lib "gdi32" Alias "SetMiterLimit" (ByVal hDC As Long, ByVal eNewLimit As Single, peOldLimit As Single)
Private Declare Function apiSetPixel& Lib "gdi32" Alias "SetPixel" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long)
Private Declare Function apiSetPixelV& Lib "gdi32" Alias "SetPixelV" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long)
Private Declare Function apiSetPolyFillMode& Lib "gdi32" Alias "SetPolyFillMode" (ByVal hDC As Long, ByVal nPolyFillMode As Long)
Private Declare Function apiSetROP2& Lib "gdi32" Alias "SetROP2" (ByVal hDC As Long, ByVal nDrawMode As Long)
Private Declare Function apiStrokeAndFillPath& Lib "gdi32" Alias "StrokeAndFillPath" (ByVal hDC As Long)
Private Declare Function apiStrokePath& Lib "gdi32" Alias "StrokePath" (ByVal hDC As Long)
Private Declare Function apiWidenPath& Lib "gdi32" Alias "WidenPath" (ByVal hDC As Long)
#Else
'Function AbortPath is not available in the WIN16 API.
'Function AngleArc is not available in the WIN16 API.
Private Declare Function apiGetBrushOrgEx% Lib "gdi32" Alias "GetBrushOrgEx" (ByVal hDC As Integer, lpPoint As POINTAPI)
Private Declare Function apiArc% Lib "gdi" Alias "Arc" (ByVal hDC As Integer, ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer, ByVal X3 As Integer, ByVal Y3 As Integer, ByVal X4 As Integer, ByVal Y4 As Integer)
Private Declare Function apiChord% Lib "gdi" Alias "Chord" (ByVal hDC As Integer, ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer, ByVal X3 As Integer, ByVal Y3 As Integer, ByVal X4 As Integer, ByVal Y4 As Integer)
Private Declare Function apiCloseMetaFile% Lib "gdi" Alias "CloseMetaFile" (ByVal hMF As Integer)
Private Declare Function apiDeleteMetaFile% Lib "gdi" Alias "DeleteMetaFile" (ByVal hMF As Integer)
Private Declare Function apiDeleteObject% Lib "gdi" Alias "DeleteObject" (ByVal hObject As Integer)
Private Declare Sub apiDrawFocusRect Lib "user" Alias "DrawFocusRect" (ByVal hDC As Integer, lpRect As RECT)
Private Declare Function apiEllipse% Lib "gdi" Alias "Ellipse" (ByVal hDC As Integer, ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer)
Private Declare Function apiExtFloodFill% Lib "gdi" Alias "ExtFloodFill" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer, ByVal crColor As Long, ByVal wFillType As Integer)
Private Declare Function apiFillRect% Lib "user" Alias "FillRect" (ByVal hDC As Integer, lpRect As RECT, ByVal hBrush As Integer)
Private Declare Function apiFloodFill% Lib "gdi" Alias "FloodFill" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer, ByVal crColor As Long)
Private Declare Function apiFrameRect% Lib "user" Alias "FrameRect" (ByVal hDC As Integer, lpRect As RECT, ByVal hBrush As Integer)
Private Declare Function apiGetBkColor& Lib "gdi" Alias "GetBkColor" (ByVal hDC As Integer)
Private Declare Function apiGetBkMode% Lib "gdi" Alias "GetBkMode" (ByVal hDC As Integer)
Private Declare Function apiGetCurrentPositionEx% Lib "gdi" Alias "GetCurrentPositionEx" (ByVal hDC As Integer, lpPoint As POINTAPI)
Private Declare Function apiGetNearestColor& Lib "gdi" Alias "GetNearestColor" (ByVal hDC As Integer, ByVal crColor As Long)
Private Declare Function apiGetPixel& Lib "gdi" Alias "GetPixel" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer)
Private Declare Function apiGetPolyFillMode% Lib "gdi" Alias "GetPolyFillMode" (ByVal hDC As Integer)
Private Declare Function apiGetROP2% Lib "gdi" Alias "GetROP2" (ByVal hDC As Integer)
Private Declare Sub apiInvertRect Lib "user" Alias "InvertRect" (ByVal hDC As Integer, lpRect As RECT)
Private Declare Function apiLineTo% Lib "gdi" Alias "LineTo" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer)
Private Declare Function apiMoveTo& Lib "gdi" Alias "MoveTo" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer)
Private Declare Function apiMoveToEx% Lib "gdi" Alias "MoveToEx" (ByVal hDC As Integer, ByVal nX As Integer, ByVal nY As Integer, lpPoint As POINTAPI)
Private Declare Function apiPie% Lib "gdi" Alias "Pie" (ByVal hDC As Integer, ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer, ByVal X3 As Integer, ByVal Y3 As Integer, ByVal X4 As Integer, ByVal Y4 As Integer)
Private Declare Function apiPlayMetaFile% Lib "gdi" Alias "PlayMetaFile" (ByVal hDC As Integer, ByVal hMF As Integer)
Private Declare Function apiPolygon% Lib "gdi" Alias "Polygon" (ByVal hDC As Integer, lpPoints As POINTAPI, ByVal nCount As Integer)
Private Declare Function apiPolyline% Lib "gdi" Alias "Polyline" (ByVal hDC As Integer, lpPoints As POINTAPI, ByVal nCount As Integer)
Private Declare Function apiRectangle% Lib "gdi" Alias "Rectangle" (ByVal hDC As Integer, ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer)
Private Declare Function apiRoundRect% Lib "gdi" Alias "RoundRect" (ByVal hDC As Integer, ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer, ByVal X3 As Integer, ByVal Y3 As Integer)
Private Declare Function apiSetBkColor& Lib "gdi" Alias "SetBkColor" (ByVal hDC As Integer, ByVal crColor As Long)
Private Declare Function apiSetBkMode% Lib "gdi" Alias "SetBkMode" (ByVal hDC As Integer, ByVal nBkMode As Integer)
Private Declare Function apiSetBrushOrg& Lib "gdi" Alias "SetBrushOrg" (ByVal hDC As Integer, ByVal nXOrg As Integer, ByVal nYOrg As Integer)
Private Declare Function apiSetPixel& Lib "gdi" Alias "SetPixel" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer, ByVal crColor As Long)
Private Declare Function apiSetPolyFillMode% Lib "gdi" Alias "SetPolyFillMode" (ByVal hDC As Integer, ByVal nPolyFillMode As Integer)
Private Declare Function apiSetROP2% Lib "gdi" Alias "SetROP2" (ByVal hDC As Integer, ByVal nDrawMode As Integer)
#End If 'WIN32
#If Win32 Then
Private Declare Function apiBitBlt& Lib "gdi32" Alias "BitBlt" (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)
Private Declare Function apiMaskBlt& Lib "gdi32" Alias "MaskBlt" (ByVal hdcDest As Long, ByVal nXDest As Long, ByVal nYDest As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long, ByVal dwRop As Long)
Private Declare Function apiPlgBlt& Lib "gdi32" Alias "PlgBlt" (ByVal hdcDest As Long, lpPoint As POINTAPI, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long)
Private Declare Function apiPatBlt& Lib "gdi32" Alias "PatBlt" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal dwRop As Long)
Private Declare Function apiStretchBlt& Lib "gdi32" Alias "StretchBlt" (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)
Private Declare Function apiReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hwnd As Long, ByVal hDC As Long)
Private Declare Function apiGetDC& Lib "user32" Alias "GetDC" (ByVal hwnd As Long)
Private Declare Function apiGetDCEx& Lib "user32" Alias "GetDCEx" (ByVal hwnd As Long, ByVal hrgnClip As Long, ByVal fdwOptions As Long)
Private Declare Function apiSelectObject& Lib "gdi32" Alias "SelectObject" (ByVal hDC As Long, ByVal hObject As Long)
Private Declare Function apiGetStockObject& Lib "gdi32" Alias "GetStockObject" (ByVal nIndex As Long)
#Else
Private Declare Function apiReleaseDC% Lib "user" Alias "ReleaseDC" (ByVal hwnd As Integer, ByVal hDC As Integer)
Private Declare Function apiGetDC% Lib "user" Alias "GetDC" (ByVal hwnd As Integer)
Private Declare Function apiGetDCEx% Lib "user" Alias "GetDCEx" (ByVal hwnd As Integer, ByVal hrgnClip As Integer, ByVal fdwOptions As Long)
Private Declare Function apiSelectObject% Lib "gdi" Alias "SelectObject" (ByVal hDC As Integer, ByVal hObject As Integer)
Private Declare Function apiGetStockObject% Lib "gdi" Alias "GetStockObject" (ByVal nIndex As Integer)
Private Declare Function apiBitBlt% Lib "gdi" Alias "BitBlt" (ByVal hDestDC As Integer, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As Integer, ByVal XSrc As Integer, ByVal YSrc As Integer, ByVal dwRop As Long)
Private Declare Function apiPatBlt% Lib "gdi" Alias "PatBlt" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal dwRop As Long)
Private Declare Function apiStretchBlt% Lib "gdi" Alias "StretchBlt" (ByVal hDC As Integer, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As Integer, ByVal XSrc As Integer, ByVal YSrc As Integer, ByVal nSrcWidth As Integer, ByVal nSrcHeight As Integer, ByVal dwRop As Long)
Public Function SetPolyFillMode(ByVal nPolyFillMode As Long) As Long
Attribute SetPolyFillMode.VB_HelpID = 2625
Attribute SetPolyFillMode.VB_Description = "Help available in Visual Basic Programmer's Guide to Win32 API CD ROM"
Dim ret&
If iHDC = 0 Then RaiseHdcError DWERR_UNINITIALIZED
ret& = apiSetPolyFillMode(iHDC, nPolyFillMode)
If ret& = 0 Then RaiseHdcError
SetPolyFillMode = ret&
End Function
Public Function SetROP2(nDrawMode As Long) As Long
Attribute SetROP2.VB_HelpID = 2629
Attribute SetROP2.VB_Description = "Help available in Visual Basic Programmer's Guide to Win32 API CD ROM"
Dim ret&
If iHDC = 0 Then RaiseHdcError DWERR_UNINITIALIZED
ret& = apiSetROP2(iHDC, nDrawMode)
If ret& = 0 Then RaiseHdcError
SetROP2 = ret&
End Function
Public Sub StrokeAndFillPath()
Attribute StrokeAndFillPath.VB_HelpID = 2684
Attribute StrokeAndFillPath.VB_Description = "Help available in Visual Basic Programmer's Guide to Win32 API CD ROM"
#If Win32 Then
Dim ret&
If iHDC = 0 Then RaiseHdcError DWERR_UNINITIALIZED
ret& = apiStrokeAndFillPath(iHDC)
If ret& = 0 Then RaiseHdcError
#Else
RaiseHdcError DWERR_NOTINWIN16
#End If
End Sub
Public Sub StrokePath()
Attribute StrokePath.VB_HelpID = 2685
Attribute StrokePath.VB_Description = "Help available in Visual Basic Programmer's Guide to Win32 API CD ROM"
#If Win32 Then
Dim ret&
If iHDC = 0 Then RaiseHdcError DWERR_UNINITIALIZED
ret& = apiStrokePath(iHDC)
If ret& = 0 Then RaiseHdcError
#Else
RaiseHdcError DWERR_NOTINWIN16
#End If
End Sub
Public Sub WidenPath()
Attribute WidenPath.VB_HelpID = 2686
Attribute WidenPath.VB_Description = "Help available in Visual Basic Programmer's Guide to Win32 API CD ROM"
#If Win32 Then
Dim ret&
If iHDC = 0 Then RaiseHdcError DWERR_UNINITIALIZED
ret& = apiWidenPath(iHDC)
If ret& = 0 Then RaiseHdcError
#Else
RaiseHdcError DWERR_NOTINWIN16
#End If
End Sub
Public Sub BitBlt(XDest As Long, YDest As Long, Width As Long, Height As Long, source As dwDeviceContext, XSrc As Long, YSrc As Long, operation As Long)
Attribute BitBlt.VB_HelpID = 2484
Attribute BitBlt.VB_Description = "Help available in Visual Basic Programmer's Guide to Win32 API CD ROM"
Dim ret&
If source.hDC = 0 Or iHDC = 0 Then RaiseHdcError DWERR_UNINITIALIZED
Public Sub StretchBlt(XDest As Long, YDest As Long, Width As Long, Height As Long, source As dwDeviceContext, XSrc As Long, YSrc As Long, srcWidth As Long, srcHeight As Long, operation As Long)
Attribute StretchBlt.VB_HelpID = 2626
Attribute StretchBlt.VB_Description = "Help available in Visual Basic Programmer's Guide to Win32 API CD ROM"
Dim ret&
If source.hDC = 0 Or iHDC = 0 Then RaiseHdcError DWERR_UNINITIALIZED
Public Sub MaskBlt(XDest As Long, YDest As Long, Width As Long, Height As Long, source As dwDeviceContext, XSrc As Long, YSrc As Long, myBitmap As dwBitmap, Xbitmap As Long, Ybitmap As Long, operation As Long)
Attribute MaskBlt.VB_HelpID = 2586
Attribute MaskBlt.VB_Description = "Help available in Visual Basic Programmer's Guide to Win32 API CD ROM"
#If Win32 Then
Dim ret&
If source.hDC = 0 Or iHDC = 0 Then RaiseHdcError DWERR_UNINITIALIZED