home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 4_2005-2006.ISO / data / Zips / Zoom_At_Cu197747322006.psc / ZoomAtCur / clsBitmap.cls
Text File  |  2004-05-18  |  62KB  |  1,773 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "clsBitmap"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Attribute VB_Description = "Creates and uses a bitmap effiently and also provides access to some graphical api functions and procedures and some higher-level graphical sub-routines"
  15. Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
  16. Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
  17. '==========================================================================
  18. '   AUTHOR   :  Eric O'Sullivan
  19. ' ------------------------------------------------------------------------
  20. '   DATE     :  11 November 2001
  21. ' ------------------------------------------------------------------------
  22. '   CONTACT  :  DiskJunky@hotmail.com
  23. ' ------------------------------------------------------------------------
  24. '   TITLE    :  Bitmap Class
  25. ' ------------------------------------------------------------------------
  26. '   COMMENTS :
  27. '               This module was made for using api graphics functions in
  28. '   your programs. With the following api calls and function and
  29. '   procedures written by me, you have to tools to do almost anything.
  30. '   The only api function listed here that is not directly used by any
  31. '   piece of code in this module is BitBlt. You have the tools to create
  32. '   and manipulate graphics, but it is still necessary to display them
  33. '   manually. The functions themselves mostly need hDc or a handle to
  34. '   work. You can find this hDc in both a forms and pictureboxes'
  35. '   properties. I have also set up a data type called BitmapStruc. For my
  36. '   programs, I have used this structure almost exclusivly for the
  37. '   graphics. The structure holds all the information needed to reference
  38. '   a bitmap created using this module (CreateNewBitmap, DeleteBitmap).
  39. '   Please keep in mind that any object (bitmap, brush, pen etc) needs to
  40. '   be deleted after use or else it will stay in memory until the program
  41. '   is finished. Not doing so will eventually cause your program to take
  42. '   up ALL your computers recources. Also for anyone using optional
  43. '   paramters, it is probably better to use a default parameter values to
  44. '   determine whether or not a parameter has been passed than the
  45. '   function "IsMissing()".
  46. '
  47. '                        ---------------------
  48. ' 19 July 2002
  49. ' The comments above were for the module APIGraphics. This class is a
  50. ' direct conversion from that module and is not completely tested as yet.
  51. ' For the purposes of this program (whatever this class happens to
  52. ' currently be in), the class will work correctly and is tested for the
  53. ' program purpose only. Currently known, there are several dependancies,
  54. '   MsImg32.dll,        StdOle2.tlb,        ATL.dll
  55. '                        ---------------------
  56. '
  57. 'Thank you,
  58. 'Eric
  59. '==========================================================================
  60.  
  61. 'require variable declaration
  62. Option Explicit
  63.  
  64. '--------------------------------------------------------------------------
  65. '                           API DECLARATIONS
  66. '--------------------------------------------------------------------------
  67. 'These procedures/functions are sorted alphabetically.
  68.  
  69. 'this will alphablend two bitmaps by a specified
  70. 'blend amount.
  71. Private Declare Function APIAlphaBlend _
  72.        Lib "msimg32" _
  73.        Alias "AlphaBlend" _
  74.             (ByVal hDcDest As Long, _
  75.              ByVal intLeftDest As Integer, _
  76.              ByVal intTopDest As Integer, _
  77.              ByVal intWidthDest As Integer, _
  78.              ByVal intHeightDest As Integer, _
  79.              ByVal hDcSource As Long, _
  80.              ByVal intLeftSource As Integer, _
  81.              ByVal intTopSource As Integer, _
  82.              ByVal intWidthSource As Integer, _
  83.              ByVal intHeightSource As Integer, _
  84.              ByVal lngBlendFunctionStruc As Long) _
  85.              As Long
  86.  
  87. 'converts a HiMetric value to a pixel value
  88. Private Declare Sub AtlHiMetricToPixel _
  89.         Lib "atl" _
  90.             (ByVal lpSizeInHiMetric As Long, _
  91.              ByVal lpSizeInPix As Long)
  92.  
  93. 'This is used to copy bitmaps
  94. Private Declare Function BitBlt _
  95.        Lib "gdi32" _
  96.             (ByVal hDestDC As Long, _
  97.              ByVal X As Long, _
  98.              ByVal Y As Long, _
  99.              ByVal nWidth As Long, _
  100.              ByVal nHeight As Long, _
  101.              ByVal hSrcDC As Long, _
  102.              ByVal xSrc As Long, _
  103.              ByVal ySrc As Long, _
  104.              ByVal dwRop As Long) _
  105.              As Long
  106.  
  107. 'used to change various windows settings
  108. Private Declare Function ChangeDisplaySettings _
  109.        Lib "user32" _
  110.        Alias "ChangeDisplaySettingsA" _
  111.             (ByRef wef As Any, _
  112.              ByVal i As Long) _
  113.              As Long
  114.  
  115. 'creates a brush object which can be applied to a bitmap
  116. Private Declare Function CreateBrushIndirect _
  117.        Lib "gdi32" _
  118.             (lpLogBrush As LogBrush) _
  119.              As Long
  120.  
  121. 'creates a colourspace object which can be applied to a bitmap
  122. Private Declare Function CreateColorSpace _
  123.        Lib "gdi32" _
  124.        Alias "CreateColorSpaceA" _
  125.             (lplogcolorspace As LogColorSpace) _
  126.              As Long
  127.  
  128. 'the will create a bitmap compatable with the passed hDc
  129. Private Declare Function CreateCompatibleBitmap _
  130.        Lib "gdi32" _
  131.             (ByVal hdc As Long, _
  132.             ByVal nWidth As Long, _
  133.             ByVal nHeight As Long) _
  134.             As Long
  135.  
  136. 'this create a compatable device context with the specified
  137. 'windows handle
  138. Private Declare Function CreateCompatibleDC _
  139.        Lib "gdi32" _
  140.             (ByVal hdc As Long) _
  141.              As Long
  142.  
  143. 'creates an elliptical region in a hDc
  144. Private Declare Function CreateEllipticRgn _
  145.        Lib "gdi32" _
  146.             (ByVal X1 As Long, _
  147.              ByVal Y1 As Long, _
  148.              ByVal X2 As Long, _
  149.              ByVal Y2 As Long) _
  150.              As Long
  151.  
  152. 'creates an elliptical region in a hDc
  153. Private Declare Function CreateEllipticRgnIndirect _
  154.        Lib "gdi32" _
  155.             (EllRect As Rect) _
  156.              As Long
  157.  
  158. 'creates a font compatable with the specified device context
  159. Private Declare Function CreateFontIndirect _
  160.        Lib "gdi32" _
  161.        Alias "CreateFontIndirectA" _
  162.             (lpLogFont As LogFont) _
  163.              As Long
  164.  
  165. 'creates a palette from the specified information
  166. Private Declare Function CreatePalette _
  167.         Lib "gdi32" _
  168.             (lpLogPalette As LOGPALETTE) _
  169.              As Long
  170.  
  171. 'creates a pen that can be applied to a hDc
  172. Private Declare Function CreatePen _
  173.        Lib "gdi32" _
  174.             (ByVal nPenStyle As Long, _
  175.              ByVal nWidth As Long, _
  176.              ByVal crColor As Long) _
  177.              As Long
  178.  
  179. 'creates a pen that can be applied to a hDc
  180. Private Declare Function CreatePenIndirect _
  181.        Lib "gdi32" _
  182.             (lpLogPen As LogPen) _
  183.              As Long
  184.  
  185. 'creates a rectangular region on a hDc
  186. Private Declare Function CreateRectRgn _
  187.        Lib "gdi32" _
  188.             (Left As Integer, _
  189.              Top As Integer, _
  190.              Right As Integer, _
  191.              Bottom As Integer) _
  192.              As Long
  193.  
  194. 'creates a rectangular region to a hDc
  195. Private Declare Function CreateRectRgnIndirect _
  196.         Lib "gdi32" _
  197.             (lpRect As Rect) _
  198.              As Long
  199.  
  200. 'creates a solid colour brush to be applied to
  201. 'a bitmap
  202. Private Declare Function CreateSolidBrush _
  203.        Lib "gdi32" _
  204.             (ColorRef As Long) _
  205.              As Long
  206.  
  207. 'removes a device context from memory
  208. Private Declare Function DeleteDC _
  209.        Lib "gdi32" _
  210.             (ByVal hdc As Long) _
  211.              As Long
  212.  
  213. 'removes an object such as a brush or bitmap from memory
  214. Private Declare Function DeleteObject _
  215.        Lib "gdi32" _
  216.             (ByVal hObject As Long) _
  217.              As Long
  218.  
  219. 'this draws the animated minimize/maximize rectangeles
  220. Private Declare Function DrawAnimatedRects _
  221.        Lib "user32" _
  222.             (ByVal hWnd As Long, _
  223.              ByVal idAni As Long, _
  224.              lprcFrom As Rect, _
  225.              lprcTo As Rect) _
  226.              As Long
  227.  
  228. 'this will draw a 2D or 3D edge on the specified DC
  229. Private Declare Function DrawEdge _
  230.         Lib "user32" _
  231.             (ByVal hdc As Long, _
  232.              qrc As Rect, _
  233.              ByVal edge As Long, _
  234.              ByVal grfFlags As Long) _
  235.              As Long
  236.  
  237. 'This will draw a frame border in the specified co-ordinates
  238. Private Declare Function DrawFrameControl _
  239.         Lib "user32" _
  240.             (ByVal hdc As Long, _
  241.              lpRect As Rect, _
  242.              ByVal un1 As Long, _
  243.              ByVal un2 As Long) _
  244.              As Long
  245.  
  246. 'this draws an icon onto a surphase (eg, a bitmap)
  247. Private Declare Function DrawIconEx _
  248.        Lib "user32" _
  249.             (ByVal hdc As Long, _
  250.              ByVal xLeft As Long, _
  251.              ByVal yTop As Long, _
  252.              ByVal hIcon As Long, _
  253.              ByVal cxWidth As Long, _
  254.              ByVal cyWidth As Long, _
  255.              ByVal istepIfAniCur As Long, _
  256.              ByVal hbrFlickerFreeDraw As Long, _
  257.              ByVal diFlags As Long) _
  258.              As Long
  259.  
  260. 'this draws text onto the bitmap
  261. Private Declare Function DrawText _
  262.        Lib "user32" _
  263.        Alias "DrawTextA" _
  264.             (ByVal hdc As Long, _
  265.              ByVal lpStr As String, _
  266.              ByVal nCount As Long, _
  267.              lpRect As Rect, _
  268.              ByVal wFormat As Long) _
  269.              As Long
  270.  
  271. 'this draws an ellipse onto the bitmap
  272. Private Declare Function Ellipse _
  273.        Lib "gdi32" _
  274.             (ByVal hdc As Long, _
  275.              X1 As Integer, _
  276.              Y1 As Integer, _
  277.              X2 As Integer, _
  278.              Y2 As Integer) _
  279.              As Boolean
  280.  
  281. 'this will set the display settings
  282. Private Declare Function EnumDisplaySettings _
  283.        Lib "user32" _
  284.        Alias "EnumDisplaySettingsA" _
  285.             (ByVal a As Long, _
  286.              ByVal B As Long, _
  287.              wef As DEVMODE) _
  288.              As Boolean
  289.  
  290. 'this provides more control than the CreatePen function
  291. Private Declare Function ExtCreatePen _
  292.        Lib "gdi32" _
  293.             (ByVal dwPenStyle As Long, _
  294.              ByVal dwWidth As Long, _
  295.              lplb As LogBrush, _
  296.              ByVal dwStyleCount As Long, _
  297.              lpStyle As Long) _
  298.              As Long
  299.  
  300. 'select a clipping region to the specified DC
  301. Private Declare Function ExtSelectClipRgn _
  302.         Lib "gdi32" _
  303.             (ByVal hdc As Long, _
  304.              ByVal hRgn As Long, _
  305.              ByVal fnMode As Long) _
  306.              As Long
  307.  
  308. 'this will fill the rectangle with the brush applied
  309. 'to the hDc
  310. Private Declare Function FillRect _
  311.        Lib "user32" _
  312.             (ByVal hWnd As Long, _
  313.              Fill As Rect, _
  314.              hBrush As Long) _
  315.              As Integer
  316.  
  317. 'this will fill a region with the brush specified
  318. Private Declare Function FillRgn _
  319.        Lib "gdi32" _
  320.             (ByVal hdc As Long, _
  321.              ByVal hRgn As Long, _
  322.              hBrush As Long) _
  323.              As Boolean
  324.  
  325. 'this will find a window based on its class and
  326. 'window name
  327. Private Declare Function FindWindow _
  328.        Lib "user32" _
  329.        Alias "FindWindowA" _
  330.             (ByVal lpClassName As String, _
  331.              ByVal lpWindowName As String) _
  332.              As Long
  333.  
  334. 'this will flash the specified window
  335. Private Declare Function FlashWindowApi _
  336.         Lib "user32" _
  337.         Alias "FlashWindow" _
  338.             (ByVal hWnd As Long, _
  339.              ByVal bInvert As Long) _
  340.              As Long
  341.  
  342. 'this will return the handle of the top-most window
  343. Private Declare Function GetActiveWindow _
  344.        Lib "user32" _
  345.             () _
  346.              As Long
  347.  
  348. 'this will get the state of any specified key - even
  349. 'the mouse buttons
  350. Private Declare Function GetAsyncKeyState _
  351.        Lib "user32" _
  352.             (ByVal vKey As Long) _
  353.              As Integer
  354.  
  355. 'this will return each bit of the bitmaps colour data
  356. Private Declare Function GetBitmapBits _
  357.         Lib "gdi32" _
  358.             (ByVal hBitmap As Long, _
  359.              ByVal dwCount As Long, _
  360.              lpBits As Any) _
  361.              As Long
  362.  
  363. 'this will get the dimensions of the specified bitmap
  364. Private Declare Function GetBitmapDimensionEx _
  365.        Lib "gdi32" _
  366.             (ByVal hBitmap As Long, _
  367.              lpDimension As SizeType) _
  368.              As Long
  369.  
  370. 'this will return the current brush origin applied to
  371. 'the specified device context
  372. Private Declare Function GetBrushOrgEx _
  373.         Lib "gdi32" _
  374.             (ByVal hdc As Long, _
  375.              lpPoint As PointAPI) _
  376.              As Long
  377.  
  378. 'this will get the class name from the handle of the
  379. 'window specified
  380. Private Declare Function GetClassName _
  381.        Lib "user32" _
  382.        Alias "GetClassNameA" _
  383.             (ByVal hWnd As Long, _
  384.              ByVal lpClassName As String, _
  385.              ByVal nMaxCount As Long) _
  386.              As Long
  387.  
  388. 'this will capture a screen shot of the specified
  389. 'area of the client
  390. Private Declare Function GetClientRect _
  391.        Lib "user32" _
  392.             (ByVal hWnd As Long, _
  393.              lpRect As Rect) _
  394.              As Long
  395.  
  396. 'this gets the cursors icon picture
  397. Private Declare Function GetCursor _
  398.        Lib "user32" _
  399.             () _
  400.              As Long
  401.  
  402. 'this gets the position of the cursor on the screen
  403. '(given in pixels)
  404. Private Declare Function GetCursorPos _
  405.        Lib "user32" _
  406.             (lpPoint As PointAPI) _
  407.              As Long
  408.  
  409. 'gets a hDc of the specified window
  410. Private Declare Function GetDC _
  411.        Lib "user32" _
  412.             (ByVal hWnd As Long) _
  413.             As Long
  414.  
  415. 'gets the entire screen area
  416. Private Declare Function GetDesktopWindow _
  417.        Lib "user32" _
  418.             () _
  419.              As Long
  420.  
  421. 'this will get the current devices' capabilities
  422. Private Declare Function GetDeviceCaps _
  423.        Lib "gdi32" _
  424.             (ByVal hdc As Long, _
  425.              ByVal nIndex As Long) _
  426.              As Long
  427.  
  428. 'returns a hanlde to the window that is currently
  429. 'in the foreground
  430. Private Declare Function GetForegroundWindow _
  431.         Lib "user32" _
  432.             () As Long
  433.  
  434. 'get the last error to occur from within the api
  435. Private Declare Function GetLastError _
  436.        Lib "kernel32" _
  437.             () _
  438.              As Long
  439.  
  440. 'get the handle of the menu bar on a window
  441. Private Declare Function GetMenu _
  442.         Lib "user32" _
  443.             (ByVal hWnd As Long) _
  444.              As Long
  445.  
  446. 'Get the sub menu ID number. This is used to
  447. 'reference sub menus along with their handle
  448. Private Declare Function GetMenuItemID _
  449.         Lib "user32" _
  450.             (ByVal hMenu As Long, _
  451.              ByVal nPos As Long) _
  452.              As Long
  453.  
  454. 'get information about the specified object such as
  455. 'its dimensions etc.
  456. Private Declare Function GetObjectAPI _
  457.        Lib "gdi32" _
  458.        Alias "GetObjectA" _
  459.             (ByVal hObject As Long, _
  460.              ByVal nCount As Long, _
  461.              lpObject As Any) _
  462.              As Long
  463.  
  464. 'get the colour of the specified pixel
  465. Private Declare Function GetPixel _
  466.        Lib "gdi32" _
  467.             (ByVal hdc As Long, _
  468.              ByVal X As Long, _
  469.              ByVal Y As Long) _
  470.              As Long
  471.  
  472. 'this will get the stretch mode of the bitmap
  473. Private Declare Function GetStretchBltMode _
  474.         Lib "gdi32" _
  475.             (ByVal hdc As Long) _
  476.              As Long
  477.  
  478. 'this will get the handle of a specified
  479. 'sub menu using the handle of the menu
  480. 'and the item ID
  481. Private Declare Function GetSubMenu _
  482.         Lib "user32" _
  483.             (ByVal hMenu As Long, _
  484.              ByVal nPos As Long) _
  485.              As Long
  486.  
  487. 'get the specified system colour
  488. Private Declare Function GetSysColor _
  489.         Lib "user32" _
  490.             (ByVal nIndex As Long) _
  491.              As Long
  492.  
  493. 'gets the palette information for the system
  494. Private Declare Function GetSystemPaletteEntries _
  495.         Lib "gdi32" _
  496.             (ByVal hdc As Long, _
  497.              ByVal wStartIndex As Long, _
  498.              ByVal wNumEntries As Long, _
  499.              lpPaletteEntries As PALETTEENTRY) _
  500.              As Long
  501.  
  502. 'this will return the size of a string in a SIZE
  503. 'structure
  504. Private Declare Function GetTextExtentPoint _
  505.         Lib "gdi32" _
  506.         Alias "GetTextExtentPoint32A" _
  507.         (ByVal hdc As Long, ByVal lpsz As String, _
  508.          ByVal cbString As Long, _
  509.          lpSize As SizeType) _
  510.          As Long
  511.  
  512. 'get the dimensions of the applied text metrics for
  513. 'the device context
  514. Private Declare Function GetTextMetrics _
  515.        Lib "gdi32" _
  516.        Alias "GetTextMetricsA" _
  517.             (ByVal hdc As Long, _
  518.              lpMetrics As TEXTMETRIC) _
  519.              As Long
  520.  
  521. 'returns the amount of time windows has been active for
  522. 'in milliseconds (sec/1000)
  523. Private Declare Function GetTickCount _
  524.        Lib "kernel32" _
  525.             () _
  526.              As Long  'very usefull timing function ;)
  527.  
  528. 'returns extended information about the version of the
  529. 'operating system currently running
  530. Private Declare Function GetVersionEx _
  531.         Lib "kernel32" _
  532.         Alias "GetVersionExA" _
  533.             (ByRef lpVersionInformation As OSVERSIONINFO) _
  534.              As Long
  535.  
  536. 'retrieves the handle of a window that has the
  537. 'specified relationship to the specified window.
  538. Private Declare Function GetWindow _
  539.        Lib "user32" _
  540.             (ByVal hWnd As Long, _
  541.              ByVal wCmd As Long) _
  542.              As Long
  543.  
  544. 'takes a snapshot of the entire window area
  545. 'including title bar, borders etc
  546. Private Declare Function GetWindowDC _
  547.         Lib "user32" _
  548.             (ByVal hWnd As Long) _
  549.              As Long
  550.  
  551. 'gets the area the specified window takes up
  552. Private Declare Function GetWindowRect _
  553.        Lib "user32" _
  554.             (ByVal hWnd As Long, _
  555.              lpRect As Rect) _
  556.              As Long
  557.  
  558. 'increases the size of a rect structure
  559. Private Declare Function InflateRect _
  560.        Lib "user32" _
  561.             (lpRect As Rect, _
  562.              ByVal X As Long, _
  563.              ByVal Y As Long) _
  564.              As Long
  565.  
  566. 'gets any intersection of two rectangles
  567. Private Declare Function IntersectRect _
  568.        Lib "user32" _
  569.             (lpDestRect As Rect, _
  570.              lpSrc1Rect As Rect, _
  571.              lpSrc2Rect As Rect) _
  572.              As Long
  573.  
  574. 'This inverts the colours in the specified
  575. 'region
  576. Private Declare Function InvertRect _
  577.         Lib "user32" _
  578.             (ByVal hdc As Long, _
  579.              lpRect As Rect) _
  580.              As Long
  581.  
  582. 'This will return non-zero if the rect is
  583. 'NOT empty
  584. Private Declare Function IsRectEmptyApi _
  585.         Lib "user32" _
  586.         Alias "IsRectEmpty" _
  587.             (lpRect As Rect) _
  588.              As Long
  589.  
  590. 'draws a line from the current position to the
  591. 'specified co-ordinates
  592. Private Declare Function LineTo _
  593.        Lib "gdi32" _
  594.             (ByVal hdc As Long, _
  595.              XEnd As Integer, _
  596.              YEnd As Integer) _
  597.              As Boolean
  598.  
  599. 'this will load a bitmap directly from a file (NT compatable)
  600. Private Declare Function LoadNTBitmap _
  601.        Lib "user32" _
  602.        Alias "LoadBitmapA" _
  603.             (ByVal hInstance As Long, _
  604.              ByVal lpBitmapName As Any) _
  605.              As Long
  606.  
  607. 'this will load a cursor into a device context
  608. Private Declare Function LoadCursor _
  609.        Lib "user32" _
  610.        Alias "LoadCursorA" _
  611.             (ByVal hInstance As Long, _
  612.              ByVal lpCursorName As Any) _
  613.              As Long
  614.  
  615. 'this will load an image into a device context (NOT NT compatable)
  616. Private Declare Function LoadImage _
  617.        Lib "user32" _
  618.        Alias "LoadImageA" _
  619.             (ByVal hInst As Long, _
  620.              ByVal lpsz As String, _
  621.              ByVal un1 As Long, _
  622.              ByVal n1 As Long, _
  623.              ByVal n2 As Long, _
  624.              ByVal un2 As Long) _
  625.              As Long
  626.  
  627. 'This stops the specified window from updating
  628. 'its display. This is mainly used to help cut out
  629. 'flicker but does not work on controls.
  630. Private Declare Function LockWindowUpdate _
  631.        Lib "user32" _
  632.             (ByVal hwndLock As Long) _
  633.              As Long
  634. 'changes some of a menu's properties
  635. Private Declare Function ModifyMenu _
  636.         Lib "user32" _
  637.         Alias "ModifyMenuA" _
  638.             (ByVal hMenu As Long, _
  639.              ByVal nPosition As Long, _
  640.              ByVal wFlags As Long, _
  641.              ByVal wIDNewItem As Long, _
  642.              ByVal lpString As Any) _
  643.              As Long
  644.  
  645. 'moves the current position to the specified
  646. 'point
  647. Private Declare Function MoveToEx _
  648.        Lib "gdi32" _
  649.             (ByVal hdc As Long, _
  650.              ByVal X As Integer, _
  651.              ByVal Y As Integer, _
  652.              ByRef lpPoint As PointAPI) _
  653.              As Boolean
  654.  
  655. 'multiplies two numbers and divides them by a third
  656. 'numbers
  657. Private Declare Function MulDiv _
  658.        Lib "kernel32" _
  659.             (ByVal nNumber As Long, _
  660.              ByVal nNumerator As Long, _
  661.              ByVal nDenominator As Long) _
  662.              As Long
  663.  
  664. 'This will increase or decrease a rectangles
  665. 'co-ordinates by the specified amount. Usefull
  666. 'for moving graphic blocks as rect structures.
  667. Private Declare Function OffsetRect _
  668.        Lib "user32" _
  669.             (lpRect As Rect, _
  670.              ByVal X As Long, _
  671.              ByVal Y As Long) _
  672.              As Long
  673.  
  674. 'creates a new picture object accoring to a PictDesc structure
  675. Private Declare Function OleCreatePictureIndirect _
  676.         Lib "olepro32.dll" _
  677.             (PicDesc As PicBmp, _
  678.              RefIID As GUID, _
  679.              ByVal fPictureOwnsHandle As Long, _
  680.              IPic As IPicture) _
  681.              As Long
  682.  
  683. 'this will paint the desktop pattern or wallpaper onto the
  684. 'specified DC
  685. Private Declare Function PaintDesktop _
  686.         Lib "user32" _
  687.             (ByVal hdc As Long) _
  688.              As Long
  689.  
  690. 'Pattern Blitter. Used to draw a pattern onto
  691. 'a device context
  692. Private Declare Function PatBlt _
  693.        Lib "gdi32" _
  694.             (ByVal hdc As Long, _
  695.              ByVal X As Long, _
  696.              ByVal Y As Long, _
  697.              ByVal nWidth As Long, _
  698.              ByVal nHeight As Long, _
  699.              ByVal dwRop As Long) _
  700.              As Long
  701.  
  702. 'This draws a polygon onto a device context
  703. 'useing an array.
  704. Private Declare Function Polygon _
  705.        Lib "gdi32" _
  706.             (ByVal hdc As Long, _
  707.              lpPoint As PointAPI, _
  708.              ByVal nCount As Long) _
  709.              As Long
  710.  
  711. 'This will draw a set of lines to the specifed
  712. 'points
  713. Private Declare Function Polyline _
  714.        Lib "gdi32" _
  715.             (ByVal hdc As Long, _
  716.              lpPoint As PointAPI, _
  717.              ByVal nCount As Long) _
  718.              As Long
  719.  
  720. 'This will draw a set of lines starting from
  721. 'the current position on the device context.
  722. Private Declare Function PolylineTo _
  723.        Lib "gdi32" _
  724.             (ByVal hdc As Long, _
  725.              lppt As PointAPI, _
  726.              ByVal cCount As Long) _
  727.              As Long
  728.  
  729. 'maps the selected palette to the system palette
  730. Private Declare Function RealizePalette _
  731.         Lib "gdi32" _
  732.             (ByVal hdc As Long) _
  733.              As Long
  734.  
  735. 'This draws a rectangle onto the device
  736. 'context
  737. Private Declare Function Rectangle _
  738.        Lib "gdi32" _
  739.             (ByVal hWnd As Long, _
  740.              X1 As Integer, _
  741.              Y1 As Integer, _
  742.              X2 As Integer, _
  743.              Y2 As Integer) _
  744.              As Long
  745.  
  746. 'This will release a device context from
  747. 'memory. Not to be confused with DeleteDC
  748. Private Declare Function ReleaseDC _
  749.        Lib "user32" _
  750.             (ByVal hWnd As Long, _
  751.              ByVal hdc As Long) _
  752.              As Long
  753.  
  754. 'this will draw a round-cornered rectangle
  755. 'onto the specified device context
  756. Private Declare Function RoundRect _
  757.        Lib "gdi32" _
  758.             (ByVal hdc As Long, _
  759.              ByVal Left As Long, _
  760.              ByVal Top As Long, _
  761.              ByVal Right As Long, _
  762.              ByVal Bottom As Long, _
  763.              ByVal X3 As Long, _
  764.              ByVal Y3 As Long) _
  765.              As Long
  766.  
  767. 'this can convert entire type structures
  768. 'to other types like a Long
  769. Private Declare Sub RtlMoveMemory _
  770.         Lib "kernel32.dll" _
  771.             (Destination As Any, _
  772.              Source As Any, _
  773.              ByVal Length As Long)
  774.  
  775. 'this will select a region for drawing to the specified
  776. 'device context
  777. Private Declare Function SelectClipRgn _
  778.         Lib "gdi32" _
  779.             (ByVal hdc As Long, _
  780.              ByVal hRgn As Long) _
  781.              As Long
  782.  
  783. 'this will select the specified object to
  784. 'a window or device context
  785. Private Declare Function SelectObject _
  786.        Lib "gdi32" _
  787.             (ByVal hdc As Long, _
  788.              ByVal hObject As Long) _
  789.              As Long
  790.  
  791. 'selects the palette to the device context
  792. Private Declare Function SelectPalette _
  793.         Lib "gdi32" _
  794.             (ByVal hdc As Long, _
  795.              ByVal hPalette As Long, _
  796.              ByVal bForceBackground As Long) _
  797.              As Long
  798.  
  799. 'this will set the bitmaps colour data to the
  800. 'new colour information
  801. Private Declare Function SetBitmapBits _
  802.         Lib "gdi32" _
  803.             (ByVal hBitmap As Long, _
  804.              ByVal dwCount As Long, _
  805.              lpBits As Any) _
  806.              As Long
  807.  
  808. 'This sets the background colour on a bitmap
  809. Private Declare Function SetBkColor _
  810.        Lib "gdi32" _
  811.             (ByVal hdc As Long, _
  812.              ByVal crColor As Long) _
  813.              As Long
  814.  
  815. 'This sets the background mode on a bitmap
  816. '(eg, transparent, solid etc)
  817. Private Declare Function SetBkMode _
  818.        Lib "gdi32" _
  819.             (ByVal hdc As Long, _
  820.              ByVal nBkMode As Long) _
  821.              As Long
  822.  
  823. 'The SetBrushOrgEx function sets the brush origin
  824. 'that GDI assigns to the next brush an application
  825. 'selects into the specified device context.
  826. Private Declare Function SetBrushOrgEx _
  827.         Lib "gdi32" _
  828.             (ByVal hdc As Long, _
  829.              ByVal nXOrg As Integer, _
  830.              ByVal nYOrg As Integer, _
  831.              lppt As PointAPI) _
  832.              As Integer
  833.  
  834. 'The color adjustment values are used to adjust
  835. 'the input color of the source bitmap for calls
  836. 'to the StretchBlt and StretchDIBits functions
  837. 'when HALFTONE mode is set.
  838. Private Declare Function SetColorAdjustment _
  839.        Lib "gdi32" _
  840.             (ByVal hdc As Long, _
  841.              lpca As COLORADJUSTMENT) _
  842.              As Long
  843.  
  844. 'sets the colourspace to a device context
  845. Private Declare Function SetColorSpace _
  846.        Lib "gdi32" _
  847.             (ByVal hdc As Long, _
  848.              ByVal hcolorspace As Long) _
  849.              As Long
  850.  
  851. 'sets the position of the cursor on the screen
  852. Private Declare Function SetCursorPos _
  853.         Lib "user32" _
  854.             (ByVal X As Long, _
  855.              ByVal Y As Long) _
  856.              As Long
  857.  
  858. 'sets the specified window to the top of the zorder queue
  859. Private Declare Function SetForegroundWindow _
  860.         Lib "user32" _
  861.             (ByVal hWnd As Long) _
  862.              As Long
  863.  
  864. 'sets the bitmap of a menu
  865. Private Declare Function SetMenuItemBitmaps _
  866.         Lib "user32" _
  867.             (ByVal hMenu As Long, _
  868.              ByVal nPosition As Long, _
  869.              ByVal wFlags As Long, _
  870.              ByVal hBitmapUnchecked As Long, _
  871.              ByVal hBitmapChecked As Long) _
  872.              As Long
  873.  
  874. 'sets the current information about the selected menu
  875. Private Declare Function SetMenuItemInfo _
  876.         Lib "user32" _
  877.         Alias "SetMenuItemInfoA" _
  878.             (ByVal hMenu As Long, _
  879.              ByVal uItem As Long, _
  880.              ByVal fByPosition As Long, _
  881.              lpmii As MENUITEMINFO) _
  882.              As Long
  883.  
  884. 'sets the colour of the specified pixel
  885. Private Declare Function SetPixel _
  886.        Lib "gdi32" _
  887.             (ByVal hdc As Long, _
  888.              ByVal X As Long, _
  889.              ByVal Y As Long, _
  890.              ByVal crColor As Long) _
  891.              As Long
  892.  
  893. 'sets the rectangles size and position
  894. Private Declare Function SetRect _
  895.        Lib "user32" _
  896.             (lpRect As Rect, _
  897.              ByVal X1 As Long, _
  898.              ByVal Y1 As Long, _
  899.              ByVal X2 As Long, _
  900.              ByVal Y2 As Long) _
  901.              As Long
  902.  
  903. 'this will set a rectangular region in the specified
  904. 'device context
  905. Private Declare Function SetRectRgn _
  906.         Lib "gdi32" _
  907.             (ByVal hRgn As Long, _
  908.              ByVal X1 As Long, _
  909.              ByVal Y1 As Long, _
  910.              ByVal X2 As Long, _
  911.              ByVal Y2 As Long) _
  912.              As Long
  913.  
  914. 'set the stretching mode for the api StretchBlt. Note
  915. 'that a call to SetBrushOrgEx must be made after calling
  916. 'SetStretchBltMode or a brush misalignment occurs.
  917. Private Declare Function SetStretchBltMode _
  918.         Lib "gdi32" _
  919.             (ByVal hdc As Long, _
  920.              ByVal nStretchMode As Integer) _
  921.              As Integer
  922.  
  923. 'set a system colour
  924. Private Declare Function SetSysColors _
  925.         Lib "user32" _
  926.             (ByVal nChanges As Long, _
  927.              lpSysColor As Long, _
  928.              lpColorValues As Long) _
  929.              As Long
  930.  
  931. 'sets the current text colour
  932. Private Declare Function SetTextColor _
  933.        Lib "gdi32" _
  934.             (ByVal hdc As Long, _
  935.              ByVal crColor As Long) _
  936.              As Long
  937.  
  938. 'show or hide the cursor
  939. Private Declare Function ShowCursor _
  940.         Lib "user32" _
  941.             (ByVal bShow As Long) _
  942.              As Long
  943.  
  944. 'pauses the execution of the programs thread
  945. 'for a specified amount of milliseconds
  946. Private Declare Sub Sleep _
  947.        Lib "kernel32" _
  948.             (ByVal dwMilliseconds As Long)
  949.  
  950. 'used to stretch or shrink a bitmap
  951. Private Declare Function StretchBlt _
  952.        Lib "gdi32" _
  953.             (ByVal hdc As Long, _
  954.              ByVal X As Long, _
  955.              ByVal Y As Long, _
  956.              ByVal nWidth As Long, _
  957.              ByVal nHeight As Long, _
  958.              ByVal hSrcDC As Long, _
  959.              ByVal xSrc As Long, _
  960.              ByVal ySrc As Long, _
  961.              ByVal nSrcWidth As Long, _
  962.              ByVal nSrcHeight As Long, _
  963.              ByVal dwRop As Long) _
  964.              As Long
  965.  
  966. 'gets some system information
  967. Private Declare Function SystemParametersInfo _
  968.         Lib "user32" _
  969.         Alias "SystemParametersInfoA" _
  970.             (ByVal uAction As Long, _
  971.              ByVal uParam As Long, _
  972.              lpvParam As Any, _
  973.              ByVal fuWinIni As Long) _
  974.              As Long
  975.  
  976. 'copyies/resizes and image using the specified Transparent colour
  977. Private Declare Function TransparentBlt _
  978.         Lib "msimg32.dll" _
  979.             (ByVal hdc As Long, _
  980.              ByVal lngX As Long, _
  981.              ByVal lngY As Long, _
  982.              ByVal lngWidth As Long, _
  983.              ByVal lngHeight As Long, _
  984.              ByVal hSrcDC As Long, _
  985.              ByVal xSrc As Long, _
  986.              ByVal ySrc As Long, _
  987.              ByVal nSrcWidth As Long, _
  988.              ByVal nSrcHeight As Long, _
  989.              ByVal crTransparent As Long) _
  990.              As Boolean
  991.  
  992. 'resets the specified object, eg a palette
  993. Private Declare Function UnrealizeObject _
  994.         Lib "gdi32" _
  995.             (ByVal lngObject As Long) _
  996.              As Long
  997.  
  998. '--------------------------------------------------------------------------
  999. '                               ENUMERATORS
  1000. '--------------------------------------------------------------------------
  1001.  
  1002. 'the direction of the gradient
  1003. Public Enum GradientTo
  1004.     GradHorizontal = 0
  1005.     GradVertical = 1
  1006. End Enum
  1007.  
  1008. 'in twips or pixels
  1009. Public Enum Scaling
  1010.     InTwips = 0
  1011.     InPixels = 1
  1012. End Enum
  1013.  
  1014. 'The key values of the mouse buttons
  1015. Public Enum MouseKeys
  1016.     MouseLeft = 1
  1017.     MouseRight = 2
  1018.     MouseMiddle = 4
  1019. End Enum
  1020.  
  1021. 'text alignment constants
  1022. Public Enum AlignText
  1023.     vbLeftAlign = 1
  1024.     vbCentreAlign = 2
  1025.     vbRightAlign = 3
  1026. End Enum
  1027.  
  1028. 'bitmap flip constants
  1029. Public Enum FlipType
  1030.     FlipHorizontally = 0
  1031.     FlipVertically = 1
  1032. End Enum
  1033.  
  1034. 'image load constants
  1035. Public Enum LoadType
  1036.     IMAGE_BITMAP = 0
  1037.     IMAGE_ICON = 1
  1038.     IMAGE_CURSOR = 2
  1039.     'IMAGE_ENHMETAFILE  = 3
  1040. End Enum
  1041.  
  1042. Public Enum EnumWindowHandles
  1043.     WND_TOP_WINDOW = 0
  1044.     WND_DESKTOP_WINDOW = 1
  1045.     WND_ACTIVE_WINDOW = 2
  1046. End Enum
  1047.  
  1048. 'the state of a key
  1049. Public Enum EnumKeyState
  1050.     AS_KEY_DOWN = 0
  1051.     AS_KEY_PRESSED = 1
  1052.     AS_KEY_UP = 2
  1053.     AS_KEY_TOGGLED = 3
  1054. End Enum
  1055.  
  1056. 'rotate bitmap constants
  1057. Public Enum RotateType
  1058.     RotateRight = 0
  1059.     RotateLeft = 1
  1060.     Rotate180 = 2
  1061. End Enum
  1062.  
  1063. Public Enum PaintMode
  1064.     'BitBlt constants
  1065.     P_AND = &H8800C6  ' (DWORD) dest = source AND dest
  1066.     P_COPY = &HCC0020 ' (DWORD) dest = source
  1067.     P_ERASE = &H440328        ' (DWORD) dest = source AND (NOT dest )
  1068.     P_INVERT = &H660046       ' (DWORD) dest = source XOR dest
  1069.     P_PAINT = &HEE0086        ' (DWORD) dest = source OR dest
  1070.     P_MERGE_COPY = &HC000CA       ' (DWORD) dest = (source AND pattern)
  1071.     P_MERGE_PAINT = &HBB0226      ' (DWORD) dest = (NOT source) OR dest
  1072.     P_NOT_COPY = &H330008      ' (DWORD) dest = (NOT source)
  1073.     P_NOT_ERASE = &H1100A6     ' (DWORD) dest = (NOT src) AND (NOT dest)
  1074. End Enum
  1075.  
  1076. 'system colour constants
  1077. Public Enum SystemColours
  1078.      col_Scrollbar = 0              'The Scrollbar colour
  1079.      col_Background = 1             'Colour of the background with no wallpaper
  1080.      col_ActiveCaption = 2          'Caption of Active Window
  1081.      col_InactiveCaption = 3        'Caption of Inactive window
  1082.      col_MenuBar = 4                'Menu
  1083.      col_Window = 5                 'Windows background
  1084.      col_WindowFrame = 6            'Window frame
  1085.      col_MenuText = 7               'Window Text
  1086.      col_WindowText = 8             '3D dark shadow (Win95)
  1087.      col_CaptionText = 9            'Text in window caption
  1088.      col_ActiveBorder = 10          'Border of active window
  1089.      col_InactiveBorder = 11        'Border of inactive window
  1090.      col_AppWorkSpace = 12          'Background of MDI desktop
  1091.      col_Highlight = 13             'Selected item background
  1092.      col_HighlightText = 14         'Selected menu item
  1093.      col_BtnFace = 15               'Button
  1094.      col_BtnSadow = 16              '3D shading of button
  1095.      col_GrayText = 17              'Grey text, of zero if dithering is used.
  1096.      col_BtnText = 18               'Button text
  1097.      col_InactiveCaptionText = 19   'Text of inactive window
  1098.      col_BtnHighlight = 20          '3D highlight of button
  1099.      col_ActiveCaption2 = 27        'Win98 only: 2nd active window color
  1100.      col_InactiveCaption2 = 28      'Win98 only: 2nd inactive window color
  1101. End Enum
  1102.  
  1103. 'colour adjustment values
  1104. Public Enum EnumColourNegative
  1105.     neg_Normal = 0                  'display picture as normal
  1106.     neg_Negative = 1                'display a negative of the picture
  1107. End Enum
  1108.  
  1109. 'colour adjustment light types
  1110. Public Enum EnumLightColour
  1111.     lit_Tungsten = 1
  1112.     lit_DayLightNoon = 2
  1113.     lit_DayLightNTSC = 3
  1114.     lit_PaperNormal = 4
  1115.     lit_PaperBond = 5
  1116.     lit_DayLightStandard = 6
  1117.     lit_DayLightNorthern = 7
  1118.     lit_Fluorescent = 8
  1119. End Enum
  1120.  
  1121. 'SetStretchBltMode constants
  1122. Public Enum EnumStretchModes
  1123.     BLACKONWHITE = 1
  1124.     STRETCH_ANDSCANS = 1
  1125.     WHITEONBLACK = 2
  1126.     STRETCH_ORSCANS = 2
  1127.     COLORONCOLOR = 3
  1128.     STRETCH_DELETESCANS = 3
  1129.     HALFTONE = 4
  1130.     STRETCH_HALFTONE = 4
  1131. End Enum
  1132.  
  1133. 'edge constants
  1134. Public Enum EnumEdges
  1135.     BDR_INNER = &HC
  1136.     BDR_OUTER = &H3
  1137.     BDR_RAISED = &H5
  1138.     BDR_RAISEDINNER = &H4
  1139.     BDR_RAISEDOUTER = &H1
  1140.     BDR_SUNKEN = &HA
  1141.     BDR_SUNKENINNER = &H8
  1142.     BDR_SUNKENOUTER = &H2
  1143.     BDR_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)
  1144.     BDR_OUTLINE = (BDR_RAISEDOUTER Or BDR_SUNKENINNER)
  1145. End Enum
  1146.  
  1147. Public Enum EnumEdgeSides
  1148.     BF_BOTTOM = &H8
  1149.     BF_LEFT = &H1
  1150.     BF_RIGHT = &H4
  1151.     BF_TOP = &H2
  1152.     BF_DIAGONAL = &H10
  1153.     BF_FLAT = &H4000     ' For flat rather than 3-D borders.
  1154.     BF_MIDDLE = &H800    ' Fill in the middle.
  1155.     BF_MONO = &H8000     ' For monochrome borders.
  1156.     BF_SOFT = &H1000     ' Use for softer buttons.
  1157.     
  1158.     BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)
  1159.     BF_BOTTOMLEFT = (BF_BOTTOM Or BF_LEFT)
  1160.     BF_BOTTOMRIGHT = (BF_BOTTOM Or BF_RIGHT)
  1161.     BF_DIAGONAL_ENDBOTTOMLEFT = (BF_DIAGONAL Or BF_BOTTOM Or BF_LEFT)
  1162.     BF_DIAGONAL_ENDBOTTOMRIGHT = (BF_DIAGONAL Or BF_BOTTOM Or BF_RIGHT)
  1163.     BF_DIAGONAL_ENDTOPLEFT = (BF_DIAGONAL Or BF_TOP Or BF_LEFT)
  1164.     BF_DIAGONAL_ENDTOPRIGHT = (BF_DIAGONAL Or BF_TOP Or BF_RIGHT)
  1165.     BF_TOPLEFT = (BF_TOP Or BF_LEFT)
  1166.     BF_TOPRIGHT = (BF_TOP Or BF_RIGHT)
  1167. End Enum
  1168.  
  1169. Public Enum EnumFrameStyle
  1170.     DFC_BUTTON = 4
  1171.     DFC_CAPTION = 1
  1172.     DFC_MENU = 2
  1173.     DFC_SCROLL = 3
  1174. End Enum
  1175.  
  1176. Public Enum EnumFrameState
  1177.     DFCS_ADJUSTRECT = &H2000
  1178.     DFCS_BUTTON3STATE = &H8
  1179.     DFCS_BUTTONCHECK = &H0
  1180.     DFCS_BUTTONPUSH = &H10
  1181.     DFCS_BUTTONRADIO = &H4
  1182.     DFCS_BUTTONRADIOIMAGE = &H1
  1183.     DFCS_BUTTONRADIOMASK = &H2
  1184.     DFCS_CAPTIONCLOSE = &H0
  1185.     DFCS_CAPTIONHELP = &H4
  1186.     DFCS_CAPTIONMAX = &H2
  1187.     DFCS_CAPTIONMIN = &H1
  1188.     DFCS_CAPTIONRESTORE = &H3
  1189.     DFCS_CHECKED = &H400
  1190.     DFCS_FLAT = &H4000
  1191.     DFCS_INACTIVE = &H100
  1192.     DFCS_MENUARROW = &H0
  1193.     DFCS_MENUARROWRIGHT = &H4
  1194.     DFCS_MENUBULLET = &H2
  1195.     DFCS_MENUCHECK = &H1
  1196.     DFCS_MONO = &H8000
  1197.     DFCS_PUSHED = &H200
  1198.     DFCS_SCROLLCOMBOBOX = &H5
  1199.     DFCS_SCROLLDOWN = &H1
  1200.     DFCS_SCROLLLEFT = &H2
  1201.     DFCS_SCROLLRIGHT = &H3
  1202.     DFCS_SCROLLSIZEGRIP = &H8
  1203.     DFCS_SCROLLSIZEGRIPRIGHT = &H10
  1204.     DFCS_SCROLLUP = &H0
  1205. End Enum
  1206.  
  1207.  
  1208. '--------------------------------------------------------------------------
  1209. '                           USER DEFINED TYPES
  1210. '--------------------------------------------------------------------------
  1211.  
  1212. 'APIAlphaBlend information for bitmaps
  1213. Private Type BLENDFUNCTION
  1214.     bytBlendOp              As Byte 'currently the only blend op supported by windows 98+ is AC_SRC_OVER
  1215.     bytBlendFlags           As Byte 'must be left blank
  1216.     bytSourceConstantAlpha  As Byte 'the amount to blend by. Must be between 0 and 255
  1217.     bytAlphaFormat          As Byte 'don't set this. If you wish more infor, go to "http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_3b3m.asp"
  1218. End Type
  1219.  
  1220. 'Bitmap structue for menu information
  1221. Private Type MENUITEMINFO
  1222.     cbSize                  As Long
  1223.     fMask                   As Long
  1224.     fType                   As Long
  1225.     fState                  As Long
  1226.     wID                     As Long
  1227.     hSubMenu                As Long
  1228.     hbmpChecked             As Long
  1229.     hbmpUnchecked           As Long
  1230.     dwItemData              As Long
  1231.     dwTypeData              As String
  1232.     cch                     As Long
  1233. End Type
  1234.  
  1235. 'size structure
  1236. Private Type SizeType
  1237.     cx                      As Long
  1238.     cy                      As Long
  1239. End Type
  1240.  
  1241. 'Text metrics
  1242. Private Type TEXTMETRIC
  1243.     tmHeight                As Long
  1244.     tmAscent                As Long
  1245.     tmDescent               As Long
  1246.     tmInternalLeading       As Long
  1247.     tmExternalLeading       As Long
  1248.     tmAveCharWidth          As Long
  1249.     tmMaxCharWidth          As Long
  1250.     tmWeight                As Long
  1251.     tmOverhang              As Long
  1252.     tmDigitizedAspectX      As Long
  1253.     tmDigitizedAspectY      As Long
  1254.     tmFirstChar             As Byte
  1255.     tmLastChar              As Byte
  1256.     tmDefaultChar           As Byte
  1257.     tmBreakChar             As Byte
  1258.     tmItalic                As Byte
  1259.     tmUnderlined            As Byte
  1260.     tmStruckOut             As Byte
  1261.     tmPitchAndFamily        As Byte
  1262.     tmCharSet               As Byte
  1263. End Type
  1264.  
  1265.  
  1266. Private Type COLORADJUSTMENT
  1267.     caSize                  As Integer
  1268.     caFlags                 As Integer
  1269.     caIlluminantIndex       As Integer
  1270.     caRedGamma              As Integer
  1271.     caGreenGamma            As Integer
  1272.     caBlueGamma             As Integer
  1273.     caReferenceBlack        As Integer
  1274.     caReferenceWhite        As Integer
  1275.     caContrast              As Integer
  1276.     caBrightness            As Integer
  1277.     caColorfulness          As Integer
  1278.     caRedGreenTint          As Integer
  1279. End Type
  1280.  
  1281. Private Type CIEXYZ
  1282.     ciexyzX                 As Long
  1283.     ciexyzY                 As Long
  1284.     ciexyzZ                 As Long
  1285. End Type
  1286.  
  1287. Private Type CIEXYZTRIPLE
  1288.     ciexyzRed               As CIEXYZ
  1289.     ciexyzGreen             As CIEXYZ
  1290.     ciexyBlue               As CIEXYZ
  1291. End Type
  1292.  
  1293. Private Type LogColorSpace
  1294.     lcsSignature            As Long
  1295.     lcsVersion              As Long
  1296.     lcsSize                 As Long
  1297.     lcsCSType               As Long
  1298.     lcsIntent               As Long
  1299.     lcsEndPoints            As CIEXYZTRIPLE
  1300.     lcsGammaRed             As Long
  1301.     lcsGammaGreen           As Long
  1302.     lcsGammaBlue            As Long
  1303.     lcsFileName             As String * 26 'MAX_PATH
  1304. End Type
  1305.  
  1306. 'display settings (800x600 etc)
  1307. Private Type DEVMODE
  1308.     dmDeviceName            As String * 32
  1309.     dmSpecVersion           As Integer
  1310.     dmDriverVersion         As Integer
  1311.     dmSize                  As Integer
  1312.     dmDriverExtra           As Integer
  1313.     dmFields                As Long
  1314.     dmOrientation           As Integer
  1315.     dmPaperSize             As Integer
  1316.     dmPaperLength           As Integer
  1317.     dmPaperWidth            As Integer
  1318.     dmScale                 As Integer
  1319.     dmCopies                As Integer
  1320.     dmDefaultSource         As Integer
  1321.     dmPrintQuality          As Integer
  1322.     dmColor                 As Integer
  1323.     dmDuplex                As Integer
  1324.     dmYResolution           As Integer
  1325.     dmTTOption              As Integer
  1326.     dmCollate               As Integer
  1327.     dmFormName              As String * 32
  1328.     dmUnusedPadding         As Integer
  1329.     dmBitsPerPel            As Long
  1330.     dmPelsWidth             As Long
  1331.     dmPelsHeight            As Long
  1332.     dmDisplayFlags          As Long
  1333.     dmDisplayFrequency      As Long
  1334. End Type
  1335.  
  1336. Private Type Rect
  1337.     Left                    As Long
  1338.     Top                     As Long
  1339.     Right                   As Long
  1340.     Bottom                  As Long
  1341. End Type
  1342.  
  1343. Private Type BitmapStruc
  1344.     lngDc                   As Long
  1345.     lngBitmap               As Long
  1346.     lngPointer              As Long
  1347.     Area                    As Rect
  1348. End Type
  1349.  
  1350. Private Type PointAPI
  1351.     X                       As Long
  1352.     Y                       As Long
  1353. End Type
  1354.  
  1355. Private Type LogPen
  1356.     lopnStyle               As Long
  1357.     lopnWidth               As PointAPI
  1358.     lopnColor               As Long
  1359. End Type
  1360.  
  1361. Private Type LogBrush
  1362.     lbStyle                 As Long
  1363.     lbColor                 As Long
  1364.     lbHatch                 As Long
  1365. End Type
  1366.  
  1367. Private Type FontStruc
  1368.     Name                    As String
  1369.     Alignment               As AlignText
  1370.     Bold                    As Boolean
  1371.     Italic                  As Boolean
  1372.     Underline               As Boolean
  1373.     StrikeThru              As Boolean
  1374.     PointSize               As Byte
  1375.     Colour                  As Long
  1376. End Type
  1377.  
  1378. Private Type LogFont
  1379.     'for the DrawText api call
  1380.     lfHeight                As Long
  1381.     lfWidth                 As Long
  1382.     lfEscapement            As Long
  1383.     lfOrientation           As Long
  1384.     lfWeight                As Long
  1385.     lfItalic                As Byte
  1386.     lfUnderline             As Byte
  1387.     lfStrikeOut             As Byte
  1388.     lfCharSet               As Byte
  1389.     lfOutPrecision          As Byte
  1390.     lfClipPrecision         As Byte
  1391.     lfQuality               As Byte
  1392.     lfPitchAndFamily        As Byte
  1393.     lfFaceName(1 To 32)     As Byte
  1394. End Type
  1395.  
  1396. Private Type Point
  1397.     'you'll need this to reference a point on the
  1398.     'screen'
  1399.     X                       As Integer
  1400.     Y                       As Integer
  1401. End Type
  1402.  
  1403. 'To hold the RGB value
  1404. Private Type RGBVal
  1405.     Red                     As Integer
  1406.     Green                   As Integer
  1407.     Blue                    As Integer
  1408. End Type
  1409.  
  1410. 'bitmap structure for the GetObject api call
  1411. Private Type BITMAP '24 bytes
  1412.     bmType                  As Long
  1413.     bmWidth                 As Long
  1414.     bmHeight                As Long
  1415.     bmWidthBytes            As Long
  1416.     bmPlanes                As Integer
  1417.     bmBitsPixel             As Integer
  1418.     bmBits                  As Long
  1419. End Type
  1420.  
  1421. 'holds version information about the operating system
  1422. Private Type OSVERSIONINFO
  1423.     dwOSVersionInfoSize     As Long
  1424.     dwMajorVersion          As Long
  1425.     dwMinorVersion          As Long
  1426.     dwBuildNumber           As Long
  1427.     dwPlatformId            As Long
  1428.     szCSDVersion            As String * 128
  1429. End Type
  1430.  
  1431. 'holds palette information
  1432. Private Type PALETTEENTRY
  1433.     peRed                   As Byte
  1434.     peGreen                 As Byte
  1435.     peBlue                  As Byte
  1436.     peFlags                 As Byte
  1437. End Type
  1438.  
  1439. 'holds entented palette information
  1440. Private Type LOGPALETTE
  1441.     palVersion              As Integer
  1442.     palNumEntries           As Integer
  1443.     palPalEntry(255)        As PALETTEENTRY ' Enough for 256 colors
  1444. End Type
  1445.  
  1446. 'holds descriptor information for a GUI
  1447. Private Type GUID
  1448.     Data1                   As Long
  1449.     Data2                   As Integer
  1450.     Data3                   As Integer
  1451.     Data4(7)                As Byte
  1452. End Type
  1453.  
  1454. 'holds picture information - used for a Picture property
  1455. Private Type PicBmp
  1456.     Size                    As Long
  1457.     Type                    As Long
  1458.     hBmp                    As Long
  1459.     hPal                    As Long
  1460.     Reserved                As Long
  1461. End Type
  1462.  
  1463. 'used mainly by ApplyMatrix for holding colour
  1464. 'data while processing
  1465. Private Type ColourInfoType
  1466.     lngColour               As Long
  1467.     intRGB(2)               As Integer
  1468. End Type
  1469.  
  1470. '--------------------------------------------------------------------------
  1471. '                         MODULE LEVEL CONSTANTS
  1472. '--------------------------------------------------------------------------
  1473. 'general constants
  1474. Private Const GW_CHILD              As Integer = 5
  1475. Private Const GW_HWNDFIRST          As Integer = 0
  1476. Private Const GW_HWNDLAST           As Integer = 1
  1477. Private Const GW_HWNDNEXT           As Integer = 2
  1478. Private Const GW_HWNDPREV           As Integer = 3
  1479. Private Const GWL_WNDPROC           As Integer = (-4)
  1480. Private Const IDANI_OPEN            As Long = &H1
  1481. Private Const IDANI_CLOSE           As Long = &H2
  1482. Private Const IDANI_CAPTION         As Long = &H3
  1483. Private Const WM_USER               As Long = &H400
  1484. Private Const RC_PALETTE            As Long = &H100
  1485. Private Const SIZEPALETTE           As Long = 104
  1486. Private Const RASTERCAPS            As Long = 38
  1487.  
  1488. 'clipping constants
  1489. Private Const RGN_AND               As Long = 1
  1490. Private Const RGN_OR                As Long = 2
  1491. Private Const RGN_XOR               As Long = 3
  1492. Private Const RGN_DIFF              As Long = 4
  1493. Private Const RGN_COPY              As Long = 5
  1494. Private Const ERRORREGION           As Integer = 0
  1495. Private Const NULLREGION            As Integer = 1
  1496. Private Const SIMPLEREGION          As Integer = 2
  1497. Private Const COMPLEXREGION         As Integer = 3
  1498.  
  1499. 'colour adjustment constants
  1500. Private Const CA_LOG_FILTER         As Long = &H2
  1501. Private Const CA_NEGATIVE           As Long = &H1
  1502. Private Const ILLUMINANT_A          As Long = 1
  1503. Private Const ILLUMINANT_B          As Long = 2
  1504. Private Const ILLUMINANT_C          As Long = 3
  1505. Private Const ILLUMINANT_D50        As Long = 4
  1506. Private Const ILLUMINANT_D55        As Long = 5
  1507. Private Const ILLUMINANT_D65        As Long = 6
  1508. Private Const ILLUMINANT_D75        As Long = 7
  1509. Private Const ILLUMINANT_F2         As Long = 8
  1510.  
  1511. 'system parameter info constants
  1512. Private Const SPI_GETWORKAREA       As Long = 48
  1513.  
  1514. 'alphablend constants
  1515. Private Const AC_SRC_OVER           As Long = &H0
  1516. Private Const AC_SRC_ALPHA          As Long = &H0
  1517.  
  1518. 'Image load constants
  1519. Private Const LR_LOADFROMFILE       As Long = &H10
  1520. Private Const LR_CREATEDIBSECTION   As Long = &H2000
  1521. Private Const LR_DEFAULTSIZE        As Long = &H40
  1522.  
  1523. 'PatBlt constants
  1524. Private Const PATCOPY               As Long = &HF00021  ' (DWORD) dest = pattern
  1525. Private Const PATINVERT             As Long = &H5A0049  ' (DWORD) dest = pattern XOR dest
  1526. Private Const PATPAINT              As Long = &HFB0A09  ' (DWORD) dest = DPSnoo
  1527. Private Const DSTINVERT             As Long = &H550009  ' (DWORD) dest = (NOT dest)
  1528. Private Const BLACKNESS             As Long = &H42      ' (DWORD) dest = BLACK
  1529. Private Const WHITENESS             As Long = &HFF0062  ' (DWORD) dest = WHITE
  1530.  
  1531. 'Display constants
  1532. Private Const CDS_FULLSCREEN        As Integer = 4
  1533. Private Const DM_BITSPERPEL         As Long = &H40000
  1534. Private Const DM_PELSWIDTH          As Long = &H80000
  1535. Private Const DM_PELSHEIGHT         As Long = &H100000
  1536. Private Const DM_DISPLAYFLAGS       As Long = &H200000
  1537. Private Const DM_DISPLAYFREQUENCY   As Long = &H400000
  1538.  
  1539. 'DrawText constants
  1540. Private Const DT_CENTER             As Long = &H1
  1541. Private Const DT_BOTTOM             As Long = &H8
  1542. Private Const DT_CALCRECT           As Long = &H400
  1543. Private Const DT_EXPANDTABS         As Long = &H40
  1544. Private Const DT_EXTERNALLEADING    As Long = &H200
  1545. Private Const DT_LEFT               As Long = &H0
  1546. Private Const DT_NOCLIP             As Long = &H100
  1547. Private Const DT_NOPREFIX           As Long = &H800
  1548. Private Const DT_RIGHT              As Long = &H2
  1549. Private Const DT_SINGLELINE         As Long = &H20
  1550. Private Const DT_TABSTOP            As Long = &H80
  1551. Private Const DT_TOP                As Long = &H0
  1552. Private Const DT_VCENTER            As Long = &H4
  1553. Private Const DT_WORDBREAK          As Long = &H10
  1554. Private Const TRANSPARENT           As Integer = 1
  1555. Private Const OPAQUE                As Integer = 2
  1556.  
  1557. 'CreateBrushIndirect constants
  1558. Private Const BS_DIBPATTERN         As Integer = 5
  1559. Private Const BS_DIBPATTERN8X8      As Integer = 8
  1560. Private Const BS_DIBPATTERNPT       As Integer = 6
  1561. Private Const BS_HATCHED            As Integer = 2
  1562. Private Const BS_HOLLOW             As Integer = 1
  1563. Private Const BS_NULL               As Integer = 1
  1564. Private Const BS_PATTERN            As Integer = 3
  1565. Private Const BS_PATTERN8X8         As Integer = 7
  1566. Private Const BS_SOLID              As Integer = 0
  1567. Private Const HS_BDIAGONAL          As Integer = 3  '  /////
  1568. Private Const HS_CROSS              As Integer = 4  '  +++++
  1569. Private Const HS_DIAGCROSS          As Integer = 5  '  xxxxx
  1570. Private Const HS_FDIAGONAL          As Integer = 2  '  \\\\\
  1571. Private Const HS_HORIZONTAL         As Integer = 0  '  -----
  1572. Private Const HS_NOSHADE            As Integer = 17
  1573. Private Const HS_SOLID              As Integer = 8
  1574. Private Const HS_SOLIDBKCLR         As Integer = 23
  1575. Private Const HS_SOLIDCLR           As Integer = 19
  1576. Private Const HS_VERTICAL           As Integer = 1  '  |||||
  1577.  
  1578. 'LogFont constants
  1579. Private Const LF_FACESIZE           As Integer = 32
  1580. Private Const FW_BOLD               As Integer = 700
  1581. Private Const FW_DONTCARE           As Integer = 0
  1582. Private Const FW_EXTRABOLD          As Integer = 800
  1583. Private Const FW_EXTRALIGHT         As Integer = 200
  1584. Private Const FW_HEAVY              As Integer = 900
  1585. Private Const FW_LIGHT              As Integer = 300
  1586. Private Const FW_MEDIUM             As Integer = 500
  1587. Private Const FW_NORMAL             As Integer = 400
  1588. Private Const FW_SEMIBOLD           As Integer = 600
  1589. Private Const FW_THIN               As Integer = 100
  1590. Private Const DEFAULT_CHARSET       As Integer = 1
  1591. Private Const OUT_CHARACTER_PRECIS  As Integer = 2
  1592. Private Const OUT_DEFAULT_PRECIS    As Integer = 0
  1593. Private Const OUT_DEVICE_PRECIS     As Integer = 5
  1594. Private Const OUT_OUTLINE_PRECIS    As Integer = 8
  1595. Private Const OUT_RASTER_PRECIS     As Integer = 6
  1596. Private Const OUT_STRING_PRECIS     As Integer = 1
  1597. Private Const OUT_STROKE_PRECIS     As Integer = 3
  1598. Private Const OUT_TT_ONLY_PRECIS    As Integer = 7
  1599. Private Const OUT_TT_PRECIS         As Integer = 4
  1600. Private Const CLIP_CHARACTER_PRECIS As Integer = 1
  1601. Private Const CLIP_DEFAULT_PRECIS   As Integer = 0
  1602. Private Const CLIP_EMBEDDED         As Integer = 128
  1603. Private Const CLIP_LH_ANGLES        As Integer = 16
  1604. Private Const CLIP_MASK             As Long = &HF
  1605. Private Const CLIP_STROKE_PRECIS    As Integer = 2
  1606. Private Const CLIP_TT_ALWAYS        As Integer = 32
  1607. Private Const WM_SETFONT            As Long = &H30
  1608. Private Const LF_FULLFACESIZE       As Integer = 64
  1609. Private Const DEFAULT_PITCH         As Integer = 0
  1610. Private Const DEFAULT_QUALITY       As Integer = 0
  1611. Private Const PROOF_QUALITY         As Integer = 2
  1612.  
  1613. 'GetDeviceCaps constants
  1614. Private Const LOGPIXELSY            As Integer = 90       '  Logical pixels/inch in Y
  1615. Private Const LOGPIXELSX            As Integer = 88       '  Logical pixels/inch in X
  1616.  
  1617. 'colourspace constants
  1618. Private Const MAX_PATH              As Integer = 260
  1619.  
  1620. 'pen constants
  1621. Private Const PS_COSMETIC           As Long = &H0
  1622. Private Const PS_DASH               As Integer = 1      '  -------
  1623. Private Const PS_DASHDOT            As Integer = 3      '  _._._._
  1624. Private Const PS_DASHDOTDOT         As Integer = 4      '  _.._.._
  1625. Private Const PS_DOT                As Integer = 2      '  .......
  1626. Private Const PS_ENDCAP_ROUND       As Long = &H0
  1627. Private Const PS_ENDCAP_SQUARE      As Long = &H100
  1628. Private Const PS_ENDCAP_FLAT        As Long = &H200
  1629. Private Const PS_GEOMETRIC          As Long = &H10000
  1630. Private Const PS_INSIDEFRAME        As Long = 6
  1631. Private Const PS_JOIN_BEVEL         As Long = &H1000
  1632. Private Const PS_JOIN_MITER         As Long = &H2000
  1633. Private Const PS_JOIN_ROUND         As Long = &H0
  1634. Private Const PS_SOLID              As Long = 0
  1635.  
  1636. 'mouse cursor constants
  1637. Private Const IDC_APPSTARTING       As Long = 32650&
  1638. Private Const IDC_ARROW             As Long = 32512&
  1639. Private Const IDC_CROSS             As Long = 32515&
  1640. Private Const IDC_IBEAM             As Long = 32513&
  1641. Private Const IDC_ICON              As Long = 32641&
  1642. Private Const IDC_NO                As Long = 32648&
  1643. Private Const IDC_SIZE              As Long = 32640&
  1644. Private Const IDC_SIZEALL           As Long = 32646&
  1645. Private Const IDC_SIZENESW          As Long = 32643&
  1646. Private Const IDC_SIZENS            As Long = 32645&
  1647. Private Const IDC_SIZENWSE          As Long = 32642&
  1648. Private Const IDC_SIZEWE            As Long = 32644&
  1649. Private Const IDC_UPARROW           As Long = 32516&
  1650. Private Const IDC_WAIT              As Long = 32514&
  1651.  
  1652. 'menu constants
  1653. Private Const MFT_RADIOCHECK        As Long = &H200&
  1654. Private Const MF_BITMAP             As Long = &H4&
  1655. Private Const MIIM_TYPE             As Long = &H10
  1656. Private Const MIIM_SUBMENU          As Long = &H4
  1657.  
  1658. 'some key values for GetASyncKeyState
  1659. Private Const KLeft                 As Integer = 37
  1660. Private Const KUp                   As Integer = 38
  1661. Private Const KRight                As Integer = 39
  1662. Private Const KDown                 As Integer = 40
  1663. Private Const K_KEY_DOWN            As Integer = -32767
  1664. Private Const K_PRESSED             As Integer = -32768
  1665.  
  1666. 'extra system colour constants to be extended from
  1667. 'the vb collection SystemColorConstants (Win98+)
  1668. Private Const vbActiveTitleBar2     As Double = 2147483675#
  1669. Private Const vbInactiveTitleBar2   As Double = 2147483676#
  1670.  
  1671. 'some mathimatical constants
  1672. Private Const PI                    As Single = 3.14159265358979
  1673. Private Const PIdiv180              As Single = 1.74532925199433E-02    'used to speed calculations when converting from/to degrees/radians for the functions Sin/Cos/Tan etc.
  1674.  
  1675. 'some class constants
  1676. Private Const LDETRIC  l    STRE6r0
  1677. Private Const K_KEY_antWto degrees/radeTREU #   As Long = 32used to speed cdR_KE    ApHARS       t/radeTREU #   A3ed Xm
  1678.  
  1679. 'The key valOEU #   A A3elLOonst ILLUMINANT_C LDET0m
  1680.  
  1681. 'The key valOEU  Name        nst ILLUMINANT_C LOP1994ivatg = 32640&
  1682. Private Const IDAs Long = &H2000
  1683. PrivatTtantsR640&
  1684. Private Cons3675#
  1685. Private D
  1686. Private Const K_KEY_antsR640&rom
  1687. 'the vb colleivate e0&rom
  1688. 'the vb colleivate
  1689. 'sysvb colleivate
  1690. 'sysvRrrXUA'themry0&H0 colleitvatey= 32648&
  1691. 'sysvRrrXUA    srlORY colleitvatey= 3264DP         As Single = 3.1415926        nst ILLU:h in X= 3.1415926     pCE= &I6  As Longfrom/to de75#
  1692. Private D
  1693. PrivRY ls Single = 3.1415926    tWidtaU ls Sls SinTen converting from/e5926MSls SantWto aU ls Sls SinTen conerce ANriveTitleBar2   As e5926MSls SantWto aU  As L( A3A       Ass SileBar22RatieAs Integer = 3
  1694.  
  1695. 'colDs L( A3A    'ND PatCB in X=y= 3264DP         
  1696.      ger = 0
  1697. Private Const HS_BDI_JOIN_MITER         AsN( A3A e CopnOIN_3fT      As Long  da   M'moa.inTen conerce ANririvatee3        oLitvatD
  1698. Private Const K_KEYatCB in       er = 0don = 2          vathcOChst C   atieAeDants
  1699. PrivnSN0
  1700. Privasyste         vathcOC+r = 0dotCB Ce
  1701. 'colDs L SLsplay a negative of the p ANriveTplay a neg PS_JOIN_ROUND   (a negative of the pgA3ed Xm
  1702.  
  1703. 'The key valOEU #   A A3emN_RO2H  = ive of the pgA3ed m
  1704. WnTen conerce0E n   A A O3lOEU #   A A3emN_RO2HarasyIAGONAL = &Te pgA3edntBlt _d4aMBOBOX IiIate Const IDC_SIZap neg  Long = &H1000
  1705. Private Constb&
  1706. Private ConstSgative of the1000
  1707. Privat pgAHAYAme class constants0ong
  1708. ong  da   M'moa.iN00s Integer = 3
  1709.  
  1710. 'colDs L( As LonrivatTtaE
  1711. 'mouse cuN00y2147483676#
  1712.  
  1713. '
  1714.  
  1715. 'The key valOEUg = &H200&_  nst -
  1716. ong  da   M'moa.iN00   As SinglectiGrWU_
  1717.  YnTe00Ce
  1718. 'colDs L SLsuT&'moa.T:h in X= 3.1415926     pCE0t
  1719.  YnTe00CeiHlass constants
  1720. Private Const LDEL Integer = 4nTe00CeiB in X=T159D constants
  1721. Private 2bDPC'ld&Te N = 1
  1722. Private Con0r   'yht               1415926   a      As Long vatTtn X= 3.14u a      As Long_eU_
  1723.  YKPIDAs Long =IOTtn X= 3.14u a  W
  1724. 'TheRrivnS i( X= 3.14u a   teger = 2      'O0M            ByVal fByPositioTtn     Aseger = 2   6FUTe00te ConPrivnS i(Const SourByPositioT ng
  1725. ongPlas    moa.sytantT
  1726. ongPlas    moa USER DEFINED TYPES
  1727. '---  '3D highlight o  p  M2Sg =9formation
  1728. Priva4'---  '3D highlightCvathcOChst C   P         As  highlight o  LhlightCghtCvPk)t C   P      CT = colleeger = 4  '  +++++
  1729. Privact C _play picture _S ++++_         As Integer = 40G      Asc thcOChst CFAAO             Asp        SCFAAOShAs Long5Private Const KRighP hd      B        ByVal nXOrg Asry a nee Const IDC_APPSTcgO  A3ed Xm
  1730.  
  1731. 'The jI/?fByVahP    T
  1732. st IDC_APPStli      1P_   #   A A3emN_RO2HarasyIAG'c A3ed Xm
  1733.  
  1734. 'The jI/?fByVahP    T
  1735. st IDC_APPStli      1P_   #   A A3em jI    AsN( A3A e CopnOIN_3fT      As Long  da   M'moa.inTen conerce ANririvatee3       PDCROn cM      AsSIONRefer    A
  1736. '-------S
  1737. ls Sls SinTePROC           PI te ConT ng
  1738. ongPlas    moa.sytantT
  1739. By= 32648&
  1740. 'sysvRrroconSEng
  1741. _
  1742. By As  moa.sytantT3264mN_RO2N8 As Long = &H3
  1743. Private  bmHeight                CSo   A
  1744. '------- = 2      'O0M      3sN( A3A e CopnOINFThe e3sN( A3A ere Sls SiEDong
  1745.     lfl CopnOINFThe e3egativeLNFThe e3s.sytantT3264mN_RO2Ulb00Ce(R from/to degreesBN_RiHLO2Ulb00Ce(R from/tI  DFCS_MENUBULLET =TNlfl= 2  
  1746.  
  1747. 'The jI/?fByVahP    T
  1748. st IDC_(R from/tI  DFCS_MENUBULLET =TNlfl= 2  Aonst PIdiv18ght              EFonst PIdiv18ght     uI from/tI  Aons  p  M2Sg =9formation
  1749. PsNl.  da   M'moa.inTen coMe Const PATPAINpSCFAAOShAs Long5PSfore CopnOIN_3fT   -bNehdOP DFCng, _
  1750.      uI from/tI15926    tWidtaU lspgA3edntBlt _from/tI15926    tWidtaU K_KEYS    N_------  As Intef3sN VahP  eE/tI15926    tmeOegreesBN_RiHSl- =      IN OUT               CSo nd Ty   IN OUT                As Integer = 38
  1751. PrivamN_RO2Haras          NFTInteg            As   #-S
  1752. ls 'ceUign = 1
  1753.     vbCN00   As Singlecti    As   #-S
  1754. ls 'ceUign = HPrivate Const FW_THIN       DC_APPSTIA    As st FW_THIN     I4mN_RPrivate DecaIC_APPSTfl= 2INrsor _
  1755.         Lib F6STIA    As st FW_THIN     dmCqUign = HPrivate Const FW_THIN        As Integer
  1756.     dmBits     As cIHIN        As NCuse   #-S
  1757. ls 'ceUign vbCN00       As cIHINf)IEtS of the pgA3ed Xm
  1758.  
  1759. MW0
  1760. Pon
  1761. PsIEe'pyies/resiz  As s0on
  1762. PsIEe'pyies/resiz  As s0on
  1763. PsAs sivate DeceSTIA    As st FW_THRROC           PIdntBlt _d4aMBOBOX IiIate ConsMWC0 _dF_BITntBlt _d4aMBOBOXTga3MBOBOX Eeger =      IN OUT            nstSIDC_SBOB nstSIDC_SBOB nstSIDC_SBOB nstr =  K        ALWILLUMa3MBOBOX As cIHIN        AsSWLt -
  1764. ong  da   M'moa.iN00ai 3sN( A3A e Coe
  1765. ongPlas    moa.sytantPoa.igTW  As cIHIN        As NCueg  da   M       _N        Ashs   #  Ad Co M       _N       tegeB nstSIDC_SBOB nstr =  K te C   _N  -------------- lRst -
  1766. ong  da   from/tI1592PrivaN  -------------- O------ lRst iva--------- O----aN  eReaN  eRXT Long
  1767.     fMask    EO----aN  eRea cd.sytantPoa.ig Long
  1768.     fMask cd.syst iva---IN        AW  BF_BOTTnyst BOBst iva---IbA
  1769. Private Con2yst BOBAeT    AW  BF_BOTTnt     As Integer
  1770.     bmBits   T Con2yst BOBLWILLC
  1771. Pr2Type
  1772. PsIEe'pyies/resiz BF_BOTTnt     As IntegerLHN        AW  BF_cd.son