home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 3_2004-2005.ISO / Data / Zips / Picture_Vi175446662004.psc / PicControl.ctl < prev    next >
Text File  |  2004-05-18  |  51KB  |  1,582 lines

  1. VERSION 5.00
  2. Begin VB.UserControl PicControl 
  3.    Appearance      =   0  'Flat
  4.    ClientHeight    =   3855
  5.    ClientLeft      =   0
  6.    ClientTop       =   0
  7.    ClientWidth     =   4110
  8.    ScaleHeight     =   257
  9.    ScaleMode       =   3  'Pixel
  10.    ScaleWidth      =   274
  11.    Begin VB.Timer tmrInsert 
  12.       Enabled         =   0   'False
  13.       Interval        =   1
  14.       Left            =   2640
  15.       Top             =   4080
  16.    End
  17.    Begin VB.Timer tmrZoom 
  18.       Enabled         =   0   'False
  19.       Interval        =   1
  20.       Left            =   2160
  21.       Top             =   4080
  22.    End
  23.    Begin VB.PictureBox picTools 
  24.       Appearance      =   0  'Flat
  25.       BackColor       =   &H80000005&
  26.       ForeColor       =   &H80000008&
  27.       Height          =   3375
  28.       Left            =   3000
  29.       ScaleHeight     =   223
  30.       ScaleMode       =   3  'Pixel
  31.       ScaleWidth      =   71
  32.       TabIndex        =   14
  33.       Top             =   0
  34.       Width           =   1095
  35.       Begin VB.PictureBox picPosition 
  36.          Appearance      =   0  'Flat
  37.          AutoRedraw      =   -1  'True
  38.          AutoSize        =   -1  'True
  39.          BackColor       =   &H00FFFFFF&
  40.          ForeColor       =   &H80000008&
  41.          Height          =   615
  42.          Left            =   120
  43.          ScaleHeight     =   39
  44.          ScaleMode       =   3  'Pixel
  45.          ScaleWidth      =   55
  46.          TabIndex        =   25
  47.          Top             =   120
  48.          Width           =   855
  49.          Begin VB.PictureBox picInsert 
  50.             Appearance      =   0  'Flat
  51.             AutoRedraw      =   -1  'True
  52.             BackColor       =   &H80000005&
  53.             FillColor       =   &H00FF0000&
  54.             ForeColor       =   &H80000008&
  55.             Height          =   285
  56.             Left            =   0
  57.             MouseIcon       =   "PicControl.ctx":0000
  58.             MousePointer    =   99  'Custom
  59.             ScaleHeight     =   17
  60.             ScaleMode       =   3  'Pixel
  61.             ScaleWidth      =   17
  62.             TabIndex        =   26
  63.             Top             =   0
  64.             Visible         =   0   'False
  65.             Width           =   285
  66.          End
  67.       End
  68.       Begin VB.ComboBox Combo1 
  69.          Height          =   315
  70.          ItemData        =   "PicControl.ctx":0CCA
  71.          Left            =   45
  72.          List            =   "PicControl.ctx":0D0A
  73.          TabIndex        =   24
  74.          Top             =   1020
  75.          Width           =   975
  76.       End
  77.       Begin VB.HScrollBar HScroll1 
  78.          Height          =   255
  79.          Left            =   480
  80.          Max             =   7
  81.          TabIndex        =   17
  82.          Top             =   3000
  83.          Value           =   2
  84.          Width           =   495
  85.       End
  86.       Begin VB.ComboBox Combo3 
  87.          Height          =   315
  88.          ItemData        =   "PicControl.ctx":0D69
  89.          Left            =   45
  90.          List            =   "PicControl.ctx":0D79
  91.          TabIndex        =   16
  92.          ToolTipText     =   "Magnification Size"
  93.          Top             =   2280
  94.          Width           =   975
  95.       End
  96.       Begin VB.ComboBox Combo2 
  97.          Height          =   315
  98.          ItemData        =   "PicControl.ctx":0D95
  99.          Left            =   45
  100.          List            =   "PicControl.ctx":0DA2
  101.          TabIndex        =   15
  102.          ToolTipText     =   "Lens Size"
  103.          Top             =   1590
  104.          Width           =   975
  105.       End
  106.       Begin VB.Label Label5 
  107.          BackStyle       =   0  'Transparent
  108.          Caption         =   "Scroll Speed"
  109.          ForeColor       =   &H00F3855A&
  110.          Height          =   255
  111.          Left            =   45
  112.          TabIndex        =   23
  113.          Top             =   810
  114.          Width           =   975
  115.       End
  116.       Begin VB.Label Label4 
  117.          Alignment       =   2  'Center
  118.          BackStyle       =   0  'Transparent
  119.          Caption         =   "100%"
  120.          ForeColor       =   &H00F3855A&
  121.          Height          =   255
  122.          Left            =   0
  123.          TabIndex        =   21
  124.          Top             =   3000
  125.          Width           =   495
  126.       End
  127.       Begin VB.Label Label1 
  128.          BackStyle       =   0  'Transparent
  129.          Caption         =   "Picture Size"
  130.          ForeColor       =   &H00F3855A&
  131.          Height          =   255
  132.          Left            =   45
  133.          TabIndex        =   20
  134.          Top             =   2760
  135.          Width           =   975
  136.       End
  137.       Begin VB.Label Label2 
  138.          BackStyle       =   0  'Transparent
  139.          Caption         =   "Zoom 3x etc"
  140.          ForeColor       =   &H00F3855A&
  141.          Height          =   255
  142.          Left            =   45
  143.          TabIndex        =   19
  144.          Top             =   2040
  145.          Width           =   975
  146.       End
  147.       Begin VB.Label Label3 
  148.          BackStyle       =   0  'Transparent
  149.          Caption         =   "Lens Size"
  150.          ForeColor       =   &H00F3855A&
  151.          Height          =   255
  152.          Left            =   45
  153.          TabIndex        =   18
  154.          Top             =   1395
  155.          Width           =   975
  156.       End
  157.       Begin VB.Image Image2 
  158.          Height          =   4035
  159.          Left            =   -120
  160.          Picture         =   "PicControl.ctx":0DBC
  161.          Stretch         =   -1  'True
  162.          Top             =   -480
  163.          Width           =   1305
  164.       End
  165.    End
  166.    Begin VB.Timer tmrScrollRight 
  167.       Enabled         =   0   'False
  168.       Interval        =   40
  169.       Left            =   1680
  170.       Top             =   4080
  171.    End
  172.    Begin VB.Timer tmrScrollLeft 
  173.       Enabled         =   0   'False
  174.       Interval        =   40
  175.       Left            =   1200
  176.       Top             =   4080
  177.    End
  178.    Begin VB.Timer tmrScrollDown 
  179.       Enabled         =   0   'False
  180.       Interval        =   40
  181.       Left            =   720
  182.       Top             =   4080
  183.    End
  184.    Begin VB.Timer tmrScrollUp 
  185.       Enabled         =   0   'False
  186.       Interval        =   40
  187.       Left            =   240
  188.       Top             =   4080
  189.    End
  190.    Begin VB.PictureBox picHolder 
  191.       Appearance      =   0  'Flat
  192.       AutoRedraw      =   -1  'True
  193.       BorderStyle     =   0  'None
  194.       ForeColor       =   &H80000008&
  195.       Height          =   315
  196.       Left            =   0
  197.       ScaleHeight     =   21
  198.       ScaleMode       =   3  'Pixel
  199.       ScaleWidth      =   249
  200.       TabIndex        =   1
  201.       Top             =   3480
  202.       Width           =   3735
  203.       Begin VB.PictureBox picHolderInsert 
  204.          BorderStyle     =   0  'None
  205.          Height          =   330
  206.          Left            =   480
  207.          ScaleHeight     =   22
  208.          ScaleMode       =   3  'Pixel
  209.          ScaleWidth      =   184
  210.          TabIndex        =   2
  211.          Top             =   0
  212.          Width           =   2760
  213.          Begin VB.PictureBox picButton 
  214.             Appearance      =   0  'Flat
  215.             AutoRedraw      =   -1  'True
  216.             AutoSize        =   -1  'True
  217.             BackColor       =   &H80000005&
  218.             BorderStyle     =   0  'None
  219.             ForeColor       =   &H80000008&
  220.             Height          =   255
  221.             Index           =   0
  222.             Left            =   30
  223.             Picture         =   "PicControl.ctx":1209
  224.             ScaleHeight     =   255
  225.             ScaleWidth      =   255
  226.             TabIndex        =   12
  227.             ToolTipText     =   "Left-botto corner"
  228.             Top             =   30
  229.             Width           =   255
  230.          End
  231.          Begin VB.PictureBox picButton 
  232.             Appearance      =   0  'Flat
  233.             AutoRedraw      =   -1  'True
  234.             AutoSize        =   -1  'True
  235.             BackColor       =   &H80000005&
  236.             BorderStyle     =   0  'None
  237.             ForeColor       =   &H80000008&
  238.             Height          =   255
  239.             Index           =   1
  240.             Left            =   300
  241.             Picture         =   "PicControl.ctx":15B9
  242.             ScaleHeight     =   255
  243.             ScaleWidth      =   255
  244.             TabIndex        =   11
  245.             ToolTipText     =   "Right-bottom corner"
  246.             Top             =   30
  247.             Width           =   255
  248.          End
  249.          Begin VB.PictureBox picButton 
  250.             Appearance      =   0  'Flat
  251.             AutoRedraw      =   -1  'True
  252.             AutoSize        =   -1  'True
  253.             BackColor       =   &H80000005&
  254.             BorderStyle     =   0  'None
  255.             ForeColor       =   &H80000008&
  256.             Height          =   255
  257.             Index           =   2
  258.             Left            =   570
  259.             Picture         =   "PicControl.ctx":1969
  260.             ScaleHeight     =   255
  261.             ScaleWidth      =   255
  262.             TabIndex        =   10
  263.             ToolTipText     =   "Centered"
  264.             Top             =   30
  265.             Width           =   255
  266.          End
  267.          Begin VB.PictureBox picButton 
  268.             Appearance      =   0  'Flat
  269.             AutoRedraw      =   -1  'True
  270.             AutoSize        =   -1  'True
  271.             BackColor       =   &H80000005&
  272.             BorderStyle     =   0  'None
  273.             ForeColor       =   &H80000008&
  274.             Height          =   255
  275.             Index           =   3
  276.             Left            =   840
  277.             Picture         =   "PicControl.ctx":1D13
  278.             ScaleHeight     =   255
  279.             ScaleWidth      =   255
  280.             TabIndex        =   9
  281.             ToolTipText     =   "Upper-left corner"
  282.             Top             =   30
  283.             Width           =   255
  284.          End
  285.          Begin VB.PictureBox picButton 
  286.             Appearance      =   0  'Flat
  287.             AutoRedraw      =   -1  'True
  288.             AutoSize        =   -1  'True
  289.             BackColor       =   &H80000005&
  290.             BorderStyle     =   0  'None
  291.             ForeColor       =   &H80000008&
  292.             Height          =   255
  293.             Index           =   4
  294.             Left            =   1110
  295.             Picture         =   "PicControl.ctx":20C3
  296.             ScaleHeight     =   255
  297.             ScaleWidth      =   255
  298.             TabIndex        =   8
  299.             ToolTipText     =   "Upper-right corner"
  300.             Top             =   30
  301.             Width           =   255
  302.          End
  303.          Begin VB.PictureBox picButton 
  304.             Appearance      =   0  'Flat
  305.             AutoRedraw      =   -1  'True
  306.             AutoSize        =   -1  'True
  307.             BackColor       =   &H80000005&
  308.             BorderStyle     =   0  'None
  309.             ForeColor       =   &H80000008&
  310.             Height          =   255
  311.             Index           =   5
  312.             Left            =   1380
  313.             Picture         =   "PicControl.ctx":2473
  314.             ScaleHeight     =   255
  315.             ScaleWidth      =   255
  316.             TabIndex        =   7
  317.             ToolTipText     =   "Scroll Left"
  318.             Top             =   30
  319.             Width           =   255
  320.          End
  321.          Begin VB.PictureBox picButton 
  322.             Appearance      =   0  'Flat
  323.             AutoRedraw      =   -1  'True
  324.             AutoSize        =   -1  'True
  325.             BackColor       =   &H80000005&
  326.             BorderStyle     =   0  'None
  327.             ForeColor       =   &H80000008&
  328.             Height          =   255
  329.             Index           =   6
  330.             Left            =   1650
  331.             Picture         =   "PicControl.ctx":2826
  332.             ScaleHeight     =   255
  333.             ScaleWidth      =   255
  334.             TabIndex        =   6
  335.             ToolTipText     =   "Scroll right"
  336.             Top             =   30
  337.             Width           =   255
  338.          End
  339.          Begin VB.PictureBox picButton 
  340.             Appearance      =   0  'Flat
  341.             AutoRedraw      =   -1  'True
  342.             AutoSize        =   -1  'True
  343.             BackColor       =   &H80000005&
  344.             BorderStyle     =   0  'None
  345.             ForeColor       =   &H80000008&
  346.             Height          =   255
  347.             Index           =   7
  348.             Left            =   1920
  349.             Picture         =   "PicControl.ctx":2BD7
  350.             ScaleHeight     =   255
  351.             ScaleWidth      =   255
  352.             TabIndex        =   5
  353.             ToolTipText     =   "Scroll up"
  354.             Top             =   30
  355.             Width           =   255
  356.          End
  357.          Begin VB.PictureBox picButton 
  358.             Appearance      =   0  'Flat
  359.             AutoRedraw      =   -1  'True
  360.             AutoSize        =   -1  'True
  361.             BackColor       =   &H80000005&
  362.             BorderStyle     =   0  'None
  363.             ForeColor       =   &H80000008&
  364.             Height          =   255
  365.             Index           =   8
  366.             Left            =   2190
  367.             Picture         =   "PicControl.ctx":2F8C
  368.             ScaleHeight     =   255
  369.             ScaleWidth      =   255
  370.             TabIndex        =   4
  371.             ToolTipText     =   "Scroll down"
  372.             Top             =   30
  373.             Width           =   255
  374.          End
  375.          Begin VB.PictureBox picButton 
  376.             Appearance      =   0  'Flat
  377.             AutoRedraw      =   -1  'True
  378.             AutoSize        =   -1  'True
  379.             BackColor       =   &H80000005&
  380.             BorderStyle     =   0  'None
  381.             ForeColor       =   &H80000008&
  382.             Height          =   255
  383.             Index           =   9
  384.             Left            =   2460
  385.             Picture         =   "PicControl.ctx":333F
  386.             ScaleHeight     =   255
  387.             ScaleWidth      =   255
  388.             TabIndex        =   3
  389.             ToolTipText     =   "Enable magnifying glass "
  390.             Top             =   30
  391.             Width           =   255
  392.          End
  393.          Begin VB.Image Image1 
  394.             Height          =   315
  395.             Left            =   0
  396.             Picture         =   "PicControl.ctx":36FD
  397.             Stretch         =   -1  'True
  398.             Top             =   0
  399.             Width           =   2745
  400.          End
  401.       End
  402.    End
  403.    Begin VB.PictureBox picFrame 
  404.       Appearance      =   0  'Flat
  405.       AutoRedraw      =   -1  'True
  406.       AutoSize        =   -1  'True
  407.       ForeColor       =   &H80000008&
  408.       Height          =   3375
  409.       Left            =   0
  410.       ScaleHeight     =   223
  411.       ScaleMode       =   3  'Pixel
  412.       ScaleWidth      =   199
  413.       TabIndex        =   0
  414.       Top             =   0
  415.       Width           =   3015
  416.       Begin VB.PictureBox picMain 
  417.          Appearance      =   0  'Flat
  418.          AutoRedraw      =   -1  'True
  419.          AutoSize        =   -1  'True
  420.          BorderStyle     =   0  'None
  421.          ForeColor       =   &H80000008&
  422.          Height          =   975
  423.          Left            =   0
  424.          ScaleHeight     =   65
  425.          ScaleMode       =   3  'Pixel
  426.          ScaleWidth      =   57
  427.          TabIndex        =   13
  428.          Top             =   0
  429.          Visible         =   0   'False
  430.          Width           =   855
  431.          Begin VB.PictureBox picZoom 
  432.             Appearance      =   0  'Flat
  433.             AutoRedraw      =   -1  'True
  434.             BackColor       =   &H80000005&
  435.             FillColor       =   &H00FF0000&
  436.             ForeColor       =   &H80000008&
  437.             Height          =   405
  438.             Left            =   0
  439.             MouseIcon       =   "PicControl.ctx":3B4A
  440.             MousePointer    =   99  'Custom
  441.             ScaleHeight     =   25
  442.             ScaleMode       =   3  'Pixel
  443.             ScaleWidth      =   25
  444.             TabIndex        =   22
  445.             Top             =   0
  446.             Visible         =   0   'False
  447.             Width           =   405
  448.          End
  449.       End
  450.    End
  451.    Begin VB.Image picDown 
  452.       Height          =   255
  453.       Index           =   3
  454.       Left            =   0
  455.       Picture         =   "PicControl.ctx":4814
  456.       Top             =   1440
  457.       Visible         =   0   'False
  458.       Width           =   255
  459.    End
  460.    Begin VB.Image picDown 
  461.       Height          =   255
  462.       Index           =   9
  463.       Left            =   0
  464.       Picture         =   "PicControl.ctx":4BDB
  465.       Top             =   2400
  466.       Visible         =   0   'False
  467.       Width           =   255
  468.    End
  469.    Begin VB.Image picDown 
  470.       Height          =   255
  471.       Index           =   8
  472.       Left            =   0
  473.       Picture         =   "PicControl.ctx":4FA1
  474.       Top             =   480
  475.       Visible         =   0   'False
  476.       Width           =   255
  477.    End
  478.    Begin VB.Image picDown 
  479.       Height          =   255
  480.       Index           =   7
  481.       Left            =   0
  482.       Picture         =   "PicControl.ctx":5361
  483.       Top             =   240
  484.       Visible         =   0   'False
  485.       Width           =   255
  486.    End
  487.    Begin VB.Image picDown 
  488.       Height          =   255
  489.       Index           =   6
  490.       Left            =   0
  491.       Picture         =   "PicControl.ctx":5726
  492.       Top             =   720
  493.       Visible         =   0   'False
  494.       Width           =   255
  495.    End
  496.    Begin VB.Image picDown 
  497.       Height          =   255
  498.       Index           =   5
  499.       Left            =   0
  500.       Picture         =   "PicControl.ctx":5AE3
  501.       Top             =   960
  502.       Visible         =   0   'False
  503.       Width           =   255
  504.    End
  505.    Begin VB.Image picDown 
  506.       Height          =   255
  507.       Index           =   4
  508.       Left            =   0
  509.       Picture         =   "PicControl.ctx":5EA1
  510.       Top             =   1200
  511.       Visible         =   0   'False
  512.       Width           =   255
  513.    End
  514.    Begin VB.Image picDown 
  515.       Height          =   255
  516.       Index           =   2
  517.       Left            =   0
  518.       Picture         =   "PicControl.ctx":6266
  519.       Top             =   1680
  520.       Visible         =   0   'False
  521.       Width           =   255
  522.    End
  523.    Begin VB.Image picDown 
  524.       Height          =   255
  525.       Index           =   1
  526.       Left            =   0
  527.       Picture         =   "PicControl.ctx":661A
  528.       Top             =   1920
  529.       Visible         =   0   'False
  530.       Width           =   255
  531.    End
  532.    Begin VB.Image picDown 
  533.       Height          =   255
  534.       Index           =   0
  535.       Left            =   0
  536.       Picture         =   "PicControl.ctx":69D8
  537.       Top             =   2160
  538.       Visible         =   0   'False
  539.       Width           =   255
  540.    End
  541.    Begin VB.Image picUp 
  542.       Height          =   255
  543.       Index           =   9
  544.       Left            =   2160
  545.       Picture         =   "PicControl.ctx":6D9A
  546.       Top             =   0
  547.       Visible         =   0   'False
  548.       Width           =   255
  549.    End
  550.    Begin VB.Image picUp 
  551.       Height          =   255
  552.       Index           =   8
  553.       Left            =   720
  554.       Picture         =   "PicControl.ctx":7158
  555.       Top             =   0
  556.       Visible         =   0   'False
  557.       Width           =   255
  558.    End
  559.    Begin VB.Image picUp 
  560.       Height          =   255
  561.       Index           =   7
  562.       Left            =   480
  563.       Picture         =   "PicControl.ctx":750F
  564.       Top             =   0
  565.       Visible         =   0   'False
  566.       Width           =   255
  567.    End
  568.    Begin VB.Image picUp 
  569.       Height          =   255
  570.       Index           =   6
  571.       Left            =   240
  572.       Picture         =   "PicControl.ctx":78C9
  573.       Top             =   0
  574.       Visible         =   0   'False
  575.       Width           =   255
  576.    End
  577.    Begin VB.Image picUp 
  578.       Height          =   255
  579.       Index           =   5
  580.       Left            =   0
  581.       Picture         =   "PicControl.ctx":7C7E
  582.       Top             =   0
  583.       Visible         =   0   'False
  584.       Width           =   255
  585.    End
  586.    Begin VB.Image picUp 
  587.       Height          =   255
  588.       Index           =   4
  589.       Left            =   960
  590.       Picture         =   "PicControl.ctx":8036
  591.       Top             =   0
  592.       Visible         =   0   'False
  593.       Width           =   255
  594.    End
  595.    Begin VB.Image picUp 
  596.       Height          =   255
  597.       Index           =   3
  598.       Left            =   1440
  599.       Picture         =   "PicControl.ctx":83E9
  600.       Top             =   0
  601.       Visible         =   0   'False
  602.       Width           =   255
  603.    End
  604.    Begin VB.Image picUp 
  605.       Height          =   255
  606.       Index           =   2
  607.       Left            =   1680
  608.       Picture         =   "PicControl.ctx":879C
  609.       Top             =   0
  610.       Visible         =   0   'False
  611.       Width           =   255
  612.    End
  613.    Begin VB.Image picUp 
  614.       Height          =   255
  615.       Index           =   1
  616.       Left            =   1200
  617.       Picture         =   "PicControl.ctx":8B47
  618.       Top             =   0
  619.       Visible         =   0   'False
  620.       Width           =   255
  621.    End
  622.    Begin VB.Image picUp 
  623.       Height          =   255
  624.       Index           =   0
  625.       Left            =   1920
  626.       Picture         =   "PicControl.ctx":8EFA
  627.       Top             =   0
  628.       Visible         =   0   'False
  629.       Width           =   255
  630.    End
  631. End
  632. Attribute VB_Name = "PicControl"
  633. Attribute VB_GlobalNameSpace = False
  634. Attribute VB_Creatable = True
  635. Attribute VB_PredeclaredId = False
  636. Attribute VB_Exposed = False
  637. Option Explicit
  638.  
  639. ' Types
  640. Private Type PictureGate
  641.     bWidth                        As Boolean
  642.     bHeight                       As Boolean
  643. End Type
  644.  
  645. Private Type POINTAPI                ' general use. Typically used for cursor location
  646.     X                             As Long
  647.     Y                             As Long
  648. End Type
  649.  
  650. Private Type PosProps
  651.     pL                            As Boolean
  652.     pR                            As Boolean
  653.     pB                            As Boolean
  654.     pt                            As Boolean
  655. End Type
  656.  
  657. Private Type Size
  658.     sWidth                        As Integer
  659.     sHeight                       As Integer
  660. End Type
  661.  
  662. ' Enums
  663. Public Enum Appearance
  664.     [peFlat] = 0
  665.     [pe3D] = 1
  666. End Enum
  667. #If False Then
  668. Private peFlat, pe3D
  669. #End If
  670.  
  671. Public Enum AlignNB
  672.     [peLeft] = 0
  673.     [peRight] = 1
  674.     [peCenter] = 2
  675. End Enum
  676. #If False Then
  677. Private peLeft, peRight, peCenter
  678. #End If
  679.  
  680. Public Enum BorderStyle
  681.     [peNone] = 0
  682.     [peFixed_Single] = 1
  683. End Enum
  684. #If False Then
  685. Private peNone, peFixed_Single
  686. #End If
  687.  
  688. Public Enum LenzSizeProps
  689.     [peSmall] = 0
  690.     [peMedium] = 1
  691.     [peLarge] = 2
  692. End Enum
  693. #If False Then
  694. Private peSmall, peMedium, peLarge
  695. #End If
  696.  
  697. Public Enum MagnifyProperties
  698.     [pe150%] = 1.5
  699.     [pe200%] = 2
  700.     [pe250%] = 2.5
  701.     [pe300%] = 3
  702. End Enum
  703. #If False Then
  704. Private pe150%, pe200%, pe250%, pe300%
  705. #End If
  706.  
  707. 'Constants
  708. Private Const SrcCopy              As Long = &HCC0020
  709. Private Const mDefScrollSpeed      As Integer = 50
  710. Private Const mDefBorderStyle      As Integer = 1
  711. Private Const mDefAppearance       As Integer = 1
  712. Private Const mDefBackColor        As Long = &H8000000F
  713. Private Const mDefAlignNB          As Integer = 2
  714. Private Const mdefLS               As Integer = 0
  715. Private Const mDefMag              As Integer = 2
  716. Private Const SS                   As Integer = 250   ' minimum width & height
  717.  
  718. 'Declarations
  719. Private b                          As Picture
  720. Private bw                         As Long
  721. Private bh                         As Long
  722. Private MagnifySize                As Single
  723. Private LenSize                    As LenzSizeProps
  724. Private mAlignNB                   As AlignNB         ' Controlbox alignment
  725. Private SizeDiff                   As Size            ' between picFrame & picMain (diff for each pic)
  726. Private mScrollSpeed               As Integer
  727. Private bGate                      As Boolean
  728. Private mBorderStyle               As BorderStyle
  729. Private mAppearance                As Appearance
  730. Private picGate                    As PictureGate
  731. Private picMainpos                 As PosProps
  732.  
  733. Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  734. Private Declare Function LockWindowUpdate Lib "user32" (ByVal hWndLock As Long) As Long
  735. Private Declare Sub ReleaseCapture Lib "user32" ()
  736. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  737. Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
  738. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)  'Makes it sleep
  739. Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, _
  740.        ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, _
  741.        ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, _
  742.        ByVal ySrc As Long, ByVal nSrcWidth As Long, _
  743.        ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
  744.  
  745. Public Property Get AlignNavBar() As AlignNB
  746. AlignNavBar = mAlignNB
  747. End Property
  748. Public Property Let AlignNavBar(ByVal NewAlignNavBar As AlignNB)
  749. mAlignNB = NewAlignNavBar
  750. PropertyChanged "AlignNavBar"
  751. UserControl_Resize
  752. End Property
  753.  
  754. Public Property Get Appearance() As Appearance
  755. Appearance = mAppearance
  756. End Property
  757. Public Property Let Appearance(ByVal NewAppearance As Appearance)
  758. mAppearance = NewAppearance
  759. PropertyChanged "Appearance"
  760. picMain.Appearance = mAppearance
  761. If Appearance = [pe3D] Then BorderStyle = [peFixed_Single]
  762. End Property
  763.  
  764. Public Property Get BackColor() As OLE_COLOR
  765. BackColor = picMain.BackColor
  766. End Property
  767. Public Property Let BackColor(ByVal NewBackColor As OLE_COLOR)
  768. picMain.BackColor = NewBackColor
  769. PropertyChanged "BackColor"
  770. picFrame.BackColor = NewBackColor
  771. picHolder.BackColor = NewBackColor
  772. End Property
  773.  
  774. Public Property Get BorderStyle() As BorderStyle
  775. BorderStyle = mBorderStyle
  776. End Property
  777. Public Property Let BorderStyle(ByVal NewBorderStyle As BorderStyle)
  778. mBorderStyle = NewBorderStyle
  779. picMain.BorderStyle = NewBorderStyle
  780. PropertyChanged "BorderStyle"
  781. End Property
  782.  
  783. Public Property Get LenzSize() As LenzSizeProps
  784. LenzSize = LenSize
  785. End Property
  786. Public Property Let LenzSize(ByVal NewLenzSize As LenzSizeProps)
  787. LenSize = NewLenzSize
  788. PropertyChanged "LenzSize"
  789. LenzSizer LenSize
  790. End Property
  791.  
  792. Public Property Get Magnify() As MagnifyProperties
  793. Magnify = MagnifySize
  794. End Property
  795. Public Property Let Magnify(ByVal NewMagnify As MagnifyProperties)
  796. MagnifySize = NewMagnify
  797. Combo3_SetText
  798. PropertyChanged "Magnify"
  799. If picZoom.Visible = True Then PaintZoomGlass
  800. End Property
  801.  
  802. Public Property Get Picture() As Picture
  803. Set Picture = picMain.Picture
  804. End Property
  805. 'This property ables you to insert the controls picture to
  806. 'another picturebox outside the usercontrol. Elese you'll get
  807. 'an error
  808. Public Property Let Picture(ByVal NewPicture As IPictureDisp)
  809. Set Picture = NewPicture
  810. End Property
  811. Public Property Set Picture(ByVal NewPicture As Picture)
  812. Set b = NewPicture
  813. LockWindowUpdate picFrame.hwnd
  814.  
  815. ' For main picture
  816. PaintThePicture
  817. PropertyChanged "Picture"
  818. UserControl_Resize
  819. If picZoom.Visible = True Then PaintZoomGlass
  820.  
  821. ' For insert picture
  822. With picInsert
  823.     If picGate.bWidth Then
  824.        .Left = picPosition.Width / 2 - .Width / 2
  825.      Else
  826.        .Left = 0
  827.     End If
  828.     If picGate.bHeight Then
  829.        .Top = picPosition.Height / 2 - .Height / 2
  830.      Else
  831.        .Top = 0
  832.     End If
  833. End With
  834. PaintThePictureCopy
  835. PaintInsertGlass
  836. ' Check main pic position against insert position. Here we line them
  837. ' up cause left position is out by 1 (drop fractions in formula's)
  838. picMain.Top = -((SizeDiff.sHeight / 100) * ((100 / (picPosition.Height - 2 - picInsert.Height)) * picInsert.Top))
  839. picMain.Left = -((SizeDiff.sWidth / 100) * ((100 / (picPosition.Width - 2 - picInsert.Width)) * picInsert.Left)) + 1
  840. HScroll1.Value = 2
  841. LockWindowUpdate 0&
  842. End Property
  843.  
  844. Public Property Get ScrollSpeed() As Integer
  845. ScrollSpeed = mScrollSpeed
  846. End Property
  847. Public Property Let ScrollSpeed(ByVal NewScrollSpeed As Integer)
  848. mScrollSpeed = NewScrollSpeed
  849. PropertyChanged "ScrollSpeed"
  850.     
  851. '10 as minimum
  852. If mScrollSpeed < 10 Then
  853.     mScrollSpeed = 10
  854.    '1000 as maximum
  855.  ElseIf mScrollSpeed > 400 Then
  856.     mScrollSpeed = 400
  857. End If
  858. Combo1.Text = mScrollSpeed
  859. End Property
  860.  
  861. Public Property Get TipTextMagnifier() As String
  862. TipTextMagnifier = picZoom.ToolTipText
  863. End Property
  864. Public Property Let TipTextMagnifier(ByVal NewTipTextMagnifier As String)
  865. picZoom.ToolTipText = NewTipTextMagnifier
  866. PropertyChanged "TipTextMagnifier"
  867. End Property
  868.  
  869. Public Property Get TipTextPicView() As String
  870. TipTextPicView = picMain.ToolTipText
  871. End Property
  872. Public Property Let TipTextPicView(ByVal NewTipTextPicView As String)
  873. picMain.ToolTipText = NewTipTextPicView
  874. PropertyChanged "TipTextPicView"
  875. End Property
  876.  
  877. Private Sub UserControl_Initialize()
  878. ''''''''
  879. End Sub
  880.  
  881. Private Sub UserControl_InitProperties()
  882. AlignNavBar = mDefAlignNB
  883. mScrollSpeed = 10
  884. LenSize = peSmall
  885. MagnifySize = [pe200%]
  886. End Sub
  887.  
  888. Private Sub UserControl_Show()
  889. Combo1.Text = mScrollSpeed
  890. Combo2.Text = "Small"
  891. Combo3.Text = "2.0x"
  892. Combo3_SetText
  893. End Sub
  894.  
  895. Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  896. With PropBag
  897.     Set picMain.Picture = .ReadProperty("Picture", Nothing)
  898.     ScrollSpeed = .ReadProperty("ScrollSpeed", mDefScrollSpeed)
  899.     BorderStyle = PropBag.ReadProperty("BorderStyle", mDefBorderStyle)
  900.     Appearance = PropBag.ReadProperty("Appearance", mDefAppearance)
  901.     BackColor = PropBag.ReadProperty("BackColor", UserControl.Parent.BackColor)
  902.     picMain.ToolTipText = PropBag.ReadProperty("TipTextPicView", "")
  903.     picZoom.ToolTipText = PropBag.ReadProperty("TipTextMagnifier", "")
  904.     AlignNavBar = .ReadProperty("AlignNavBar", mDefAlignNB)
  905.     LenzSize = PropBag.ReadProperty("LenzSize", mdefLS)
  906.     Magnify = PropBag.ReadProperty("Magnify", mDefMag)
  907. End With
  908. End Sub
  909.  
  910. Private Sub UserControl_Resize()
  911. Dim w As Integer
  912. Dim h As Integer
  913.  
  914. On Error Resume Next
  915.  
  916. If picGate.bHeight Then picGate.bHeight = False
  917. If picGate.bWidth Then picGate.bWidth = False
  918.  
  919. w = UserControl.ScaleWidth
  920. h = UserControl.ScaleHeight
  921.  
  922. If w < SS Then
  923.     UserControl.ScaleWidth = SS
  924.     picFrame.Width = SS - 78
  925.     picHolder.Width = SS
  926.     w = SS
  927.  ElseIf UserControl.ScaleHeight < SS Then
  928.     UserControl.ScaleHeight = SS
  929.     h = SS
  930. End If
  931.  
  932. ' Main frame
  933. picFrame.Move 1, 1, w - 76, h - picHolder.Height - 3
  934.  
  935. ' Main picture
  936. Dim nL As Integer
  937. Dim nT As Integer
  938. ' Center image if smaller than picFrame
  939. With picMain
  940.     If .Width < picFrame.Width Then
  941.         nL = picFrame.Width / 2 - .Width / 2
  942.         picGate.bWidth = True
  943.        If .Height < picFrame.Height Then
  944.           nT = picFrame.Height / 2 - .Height / 2
  945.           picGate.bHeight = True
  946.           .Move nL, nT
  947.         Else
  948.           .Move nL
  949.        End If
  950.      ElseIf .Height < picFrame.Height Then
  951.        nT = picFrame.Height / 2 - .Height / 2
  952.        picGate.bHeight = True
  953.        .Top = nT
  954.     End If
  955. End With
  956.  
  957. 'Controls
  958. picTools.Move w - picTools.Width - 1, 1
  959. ' Control box holder
  960. picHolder.Move 0, h - picHolder.Height - 1, w - 78
  961.  
  962. DoEvents
  963. ' Control box (inside control box holder)
  964. With picHolderInsert
  965.     Select Case mAlignNB
  966.         Case peLeft
  967.             .Left = 0
  968.         Case peRight
  969.             .Left = picHolder.Width - .Width
  970.         Case peCenter
  971.             .Left = picHolder.Width / 2 - .Width / 2
  972.     End Select
  973. End With
  974.  
  975. DoEvents
  976. SizeDiff.sHeight = picMain.Height - picFrame.Height
  977. SizeDiff.sWidth = picMain.Width - picFrame.Width
  978. End Sub
  979.  
  980. Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  981. With PropBag
  982.     .WriteProperty "Picture", picMain.Picture, Nothing
  983.     .WriteProperty "ScrollSpeed", mScrollSpeed, mDefScrollSpeed
  984.     .WriteProperty "BorderStyle", mBorderStyle, mDefBorderStyle
  985.     .WriteProperty "Appearance", mAppearance, mDefAppearance
  986.     .WriteProperty "BackColor", picMain.BackColor, UserControl.Parent.BackColor
  987.     .WriteProperty "TipTextPicView", picMain.ToolTipText, ""
  988.     .WriteProperty "TipTextMagnifier", picZoom.ToolTipText, ""
  989.     .WriteProperty "AlignNavBar", mAlignNB, mDefAlignNB
  990.     .WriteProperty "LenzSize", LenSize, mdefLS
  991.     .WriteProperty "Magnify", MagnifySize, mDefMag
  992. End With
  993. End Sub
  994.  
  995. Private Sub Combo1_Change()
  996. Combo1_Click
  997. End Sub
  998. Private Sub Combo1_Click()
  999. ScrollSpeed = Combo1.Text
  1000. End Sub
  1001.  
  1002. Private Sub Combo2_Change()
  1003. Combo2_Click
  1004. End Sub
  1005. Private Sub Combo2_Click()
  1006. Select Case Combo2.Text
  1007.    Case "Small"
  1008.       LenzSizer peSmall
  1009.    Case "Medium"
  1010.       LenzSizer peMedium
  1011.    Case "Large"
  1012.       LenzSizer peLarge
  1013. End Select
  1014. End Sub
  1015.  
  1016. Private Sub Combo3_Change()
  1017. Combo3_Click
  1018. End Sub
  1019. Private Sub Combo3_Click()
  1020. Select Case Combo3.Text
  1021.    Case "1.5x"
  1022.       MagnifySize = 1.5
  1023.    Case "2.0x"
  1024.       MagnifySize = 2
  1025.    Case "2.5x"
  1026.       MagnifySize = 2.5
  1027.    Case "3.0x"
  1028.       MagnifySize = 3
  1029. End Select
  1030. picZoom.ToolTipText = Combo3.Text & " magnification"
  1031. If picZoom.Visible = True Then PaintZoomGlass
  1032. End Sub
  1033. Private Sub Combo3_SetText()
  1034. With Combo3
  1035.     Select Case MagnifySize
  1036.        Case [pe150%]
  1037.           .Text = "1.5x"
  1038.        Case [pe200%]
  1039.           .Text = "2.0x"
  1040.        Case [pe250%]
  1041.           .Text = "2.5x"
  1042.        Case [pe250%]
  1043.           .Text = "3.0x"
  1044.     End Select
  1045.     picZoom.ToolTipText = .Text & " magnification"
  1046. End With
  1047. End Sub
  1048.  
  1049. Private Sub HScroll1_Change()
  1050. HScroll1_Click
  1051. End Sub
  1052. Private Sub HScroll1_Click()
  1053. If picMain.Picture = 0 Then Exit Sub
  1054. ReleaseCapture
  1055. DoEvents
  1056.  
  1057. Select Case HScroll1.Value
  1058.    Case Is = 0
  1059.       Label4.Caption = "50 %"
  1060.    Case Is = 1
  1061.       Label4.Caption = "75 %"
  1062.    Case Else
  1063.       Label4.Caption = (HScroll1.Value - 1) * 100 & " %"
  1064. End Select
  1065.  
  1066. LockWindowUpdate picFrame.hwnd
  1067. PaintThePicture
  1068. UserControl_Resize
  1069.  
  1070. picMain.ToolTipText = "Picture size: " & Label4.Caption
  1071.  
  1072. ' If picutre size is less then picFrame size then center images
  1073. If picGate.bWidth Then
  1074.    picInsert.Left = picPosition.Width / 2 - picInsert.Width / 2
  1075. End If
  1076. If picGate.bHeight Then
  1077.    picInsert.Top = picPosition.Height / 2 - picInsert.Height / 2
  1078. End If
  1079. 'reposition main picture
  1080. picMain.Top = -((SizeDiff.sHeight / 100) * ((100 / (picPosition.Height - 2 - picInsert.Height)) * picInsert.Top))
  1081. picMain.Left = -((SizeDiff.sWidth / 100) * ((100 / (picPosition.Width - 2 - picInsert.Width)) * picInsert.Left))
  1082. 'reposition zoom lens
  1083. If picZoom.Visible = True Then
  1084.     picZoom.Visible = False
  1085.     PaintZoomGlass
  1086. End If
  1087. LockWindowUpdate 0&
  1088. End Sub
  1089.  
  1090. Private Sub LenzSizer(l As LenzSizeProps)
  1091. LenSize = l
  1092. With picZoom
  1093.    Select Case l
  1094.       Case peSmall
  1095.            .Width = 67
  1096.            .Height = 67
  1097.       Case peMedium
  1098.            .Width = 113
  1099.            .Height = 113
  1100.       Case peLarge
  1101.            .Width = 160
  1102.            .Height = 160
  1103.    End Select
  1104.    If .Visible = True Then PaintZoomGlass
  1105. End With
  1106. End Sub
  1107.  
  1108. Private Sub PaintThePicture()
  1109. Dim i As Single
  1110. Dim tH As Integer
  1111. Dim tW As Integer
  1112.  
  1113. On Error GoTo PaintErr
  1114.  
  1115. Select Case HScroll1.Value
  1116.    Case 0
  1117.       i = 0.5
  1118.    Case 1
  1119.       i = 0.75
  1120.    Case Else
  1121.       i = HScroll1.Value - 1
  1122. End Select
  1123.  
  1124. With picMain
  1125.     LockWindowUpdate picFrame.hwnd
  1126.     .Top = 0
  1127.     .Left = 0
  1128.     Set picMain.Picture = b
  1129.     .Width = .Width * i
  1130.     .Height = .Height * i
  1131.     bw = .ScaleX(b.Width, vbHimetric, .ScaleMode)
  1132.     bh = .ScaleY(b.Height, vbHimetric, .ScaleMode)
  1133.     picMain.PaintPicture b, 0, 0, .ScaleWidth, .ScaleHeight, 0, 0, bw, bh
  1134.     If .Visible = False Then .Visible = True
  1135.     tW = .ScaleX(b.Width, vbHimetric, .ScaleMode)
  1136.     tH = .ScaleY(b.Height, vbHimetric, .ScaleMode)
  1137.     picPosition.PaintPicture b, 0, 0, picPosition.ScaleWidth, picPosition.ScaleHeight, 0, 0, tW, tH
  1138.     If picInsert.Visible = False Then picInsert.Visible = True
  1139. End With
  1140. PaintErr:
  1141. LockWindowUpdate 0&
  1142. End Sub
  1143.  
  1144. Private Sub PaintThePictureCopy()
  1145. Dim tH As Integer
  1146. Dim tW As Integer
  1147.  
  1148. On Error GoTo PaintErr
  1149.  
  1150. With picPosition
  1151.     tW = .ScaleX(b.Width, vbHimetric, .ScaleMode)
  1152.     tH = .ScaleY(b.Height, vbHimetric, .ScaleMode)
  1153.     picPosition.PaintPicture b, 0, 0, picPosition.ScaleWidth, picPosition.ScaleHeight, 0, 0, tW, tH
  1154.     If picInsert.Visible = False Then picInsert.Visible = True
  1155. End With
  1156. PaintErr:
  1157. End Sub
  1158.  
  1159. Private Sub PaintZoomGlass()
  1160. Dim PercentPictureTop As Integer
  1161. Dim PercentPictureLeft As Integer
  1162. Dim ZoomPositionTop As Integer
  1163. Dim ZoomPositionLeft As Integer
  1164. Dim MagSize As Single
  1165. Dim ShowMsg As Boolean
  1166.  
  1167. On Error GoTo PaintErr
  1168.  
  1169. ' Sanity checks to ensure zoom lens is smaller than picture size
  1170. If picZoom.Width > picMain.Width Then
  1171.    ShowMsg = True
  1172. End If
  1173. If picZoom.Height > picMain.Height Then
  1174.    ShowMsg = True
  1175. End If
  1176. If ShowMsg Then
  1177.    If LenSize = peMedium Or LenSize = peLarge Then
  1178.       MsgBox "Increase picture size," & vbCrLf & _
  1179.              "or decrease zoom lens size first!", vbExclamation + vbOKOnly, App.Title
  1180.     Else
  1181.       MsgBox "Increase picture size first!", vbExclamation + vbOKOnly, App.Title
  1182.    End If
  1183.    picZoom.Visible = False
  1184.    Exit Sub
  1185. End If
  1186.  
  1187. With picZoom
  1188.     ' Show zoom lens if not already visible
  1189.     If .Visible = False Then
  1190.         .Left = -picMain.Left + (picFrame.Width / 2 - .Width / 2)
  1191.         .Top = -picMain.Top + (picFrame.Height / 2 - .Height / 2)
  1192.         .Visible = True
  1193.     End If
  1194.  
  1195.     ' This will calculate the 'area' of the underlying picture (picMain)
  1196.     ' for the Zoom lenz to magnify.
  1197.     ' The formula works so the zoom lenz does not have to move anywhere
  1198.     ' offscreen or 'out of view' in order to zoom in on all of the underlying picture.
  1199.     ' Diagram demonstrates postion of 'area'
  1200.      
  1201.     '   '--'--'------------------------'--'--'
  1202.     '   'area '  b  '            '  b  ' area'
  1203.     '   '-----'  o  '            '  o  '-----'
  1204.     '   ' zoom   x  '            '  x  zoom  '
  1205.     '   '-----------'            '-----------'
  1206.     '   '           '-----------'            '
  1207.     '   '           'z '-----' b'            '
  1208.     '   '           'o 'Area!' o'            '
  1209.     '   '           'o '-----' x'            '
  1210.     '   '           '-----------'            '
  1211.     '   '-----------'            '-----------'
  1212.     '   ' zoom   b  '            '  b  zoom  '
  1213.     '   '-----'  o  '            '  o  '-----'
  1214.     '   'area '  x  '            '  x  ' area'
  1215.     '   '--'--'------------------------'--'--'
  1216.  
  1217.     ' Get picture positions for StretchBlt routine
  1218.     MagSize = .Height / MagnifySize
  1219.     PercentPictureTop = (100 / (picMain.Height - .Height)) * .Top
  1220.     ZoomPositionTop = .Top + (((.Height - MagSize) / 100) * PercentPictureTop)
  1221.     PercentPictureLeft = (100 / (picMain.Width - picZoom.Width)) * .Left
  1222.     ZoomPositionLeft = .Left + (((.Width - MagSize) / 100) * PercentPictureLeft)
  1223.  
  1224.     StretchBlt .hdc, _
  1225.                0, 0, .Width, .Height, _
  1226.                picMain.hdc, _
  1227.                ZoomPositionLeft, ZoomPositionTop, _
  1228.                .Width / MagnifySize, .Height / MagnifySize, SrcCopy
  1229.     .Refresh
  1230. End With
  1231. PaintErr:
  1232. End Sub
  1233.  
  1234. Private Sub PaintInsertGlass()
  1235. On Error GoTo PaintErr
  1236.  
  1237. With picInsert
  1238.     StretchBlt .hdc, _
  1239.             0, 0, .Width, .Height, _
  1240.             picPosition.hdc, _
  1241.             .Left, .Top, _
  1242.             .Width, .Height, SrcCopy
  1243.     .Refresh
  1244. End With
  1245. PaintErr:
  1246. End Sub
  1247.  
  1248. Private Sub picButton_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  1249. picButton(Index).Picture = picDown(Index).Picture
  1250. ' Sanity checks on timers
  1251. tmrZoom.Enabled = False
  1252. tmrInsert.Enabled = False
  1253.  
  1254. Select Case picButton(Index).Index
  1255.    Case 5
  1256.       tmrScrollLeft.Enabled = True
  1257.    Case 6
  1258.       tmrScrollRight.Enabled = True
  1259.    Case 7
  1260.       tmrScrollUp.Enabled = True
  1261.    Case 8
  1262.       tmrScrollDown.Enabled = True
  1263. End Select
  1264. End Sub
  1265.  
  1266. Private Sub picButton_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  1267. Dim pos As Size
  1268.  
  1269. picButton(Index).Picture = picUp(Index).Picture
  1270.     
  1271. Select Case picButton(Index).Index
  1272.    Case 0
  1273.       If picZoom.Visible = True Then
  1274.          If Not picGate.bHeight Then
  1275.             If Not picMainpos.pB Then picZoom.Top = picZoom.Top + (SizeDiff.sHeight + picMain.Top) '- picFrame.Height ' SizeDiff.sHeight
  1276.             picMainpos.pB = True
  1277.             picMainpos.pt = False
  1278.          End If
  1279.          If Not picGate.bWidth Then
  1280.             If Not picMainpos.pL Then picZoom.Left = picZoom.Left + picMain.Left ' picmain is negative
  1281.             picMainpos.pL = True
  1282.             picMainpos.pR = False
  1283.          End If
  1284.       End If
  1285.       If Not picGate.bWidth Then picMain.Left = 0
  1286.       If Not picGate.bHeight Then picMain.Top = -SizeDiff.sHeight
  1287.    
  1288.    Case 1
  1289.       If picZoom.Visible = True Then
  1290.          If Not picGate.bHeight Then
  1291.             If Not picMainpos.pB Then picZoom.Top = picZoom.Top + (SizeDiff.sHeight + picMain.Top)
  1292.             picMainpos.pB = True
  1293.             picMainpos.pt = False
  1294.          End If
  1295.          If Not picGate.bWidth Then
  1296.             If Not picMainpos.pR Then picZoom.Left = picZoom.Left + (SizeDiff.sWidth + picMain.Left)
  1297.             picMainpos.pR = True
  1298.             picMainpos.pL = False
  1299.          End If
  1300.       End If
  1301.       If Not picGate.bHeight Then picMain.Top = -SizeDiff.sHeight
  1302.       If Not picGate.bWidth Then picMain.Left = -SizeDiff.sWidth
  1303.    
  1304.    Case 2
  1305.       If picZoom.Visible = True Then
  1306.          If Not picGate.bHeight Then
  1307.             picZoom.Top = SizeDiff.sHeight / 2 + (picZoom.Top + picMain.Top)
  1308.             picMainpos.pt = False
  1309.             picMainpos.pB = False
  1310.          End If
  1311.          If Not picGate.bWidth Then
  1312.             picZoom.Left = SizeDiff.sWidth / 2 + (picZoom.Left + picMain.Left)
  1313.             picMainpos.pR = False
  1314.             picMainpos.pL = False
  1315.          End If
  1316.       End If
  1317.       If Not picGate.bHeight Then picMain.Top = -SizeDiff.sHeight / 2
  1318.       If Not picGate.bWidth Then picMain.Left = -SizeDiff.sWidth / 2
  1319.    
  1320.    Case 3
  1321.       If picZoom.Visible = True Then
  1322.          If Not picGate.bHeight Then
  1323.             If Not picMainpos.pt Then picZoom.Top = picZoom.Top + picMain.Top 'picmain is negative
  1324.             picMainpos.pt = True
  1325.             picMainpos.pB = False
  1326.          End If
  1327.          If Not picGate.bWidth Then
  1328.             If Not picMainpos.pL Then picZoom.Left = picZoom.Left + picMain.Left ' picmain is negative
  1329.             picMainpos.pL = True
  1330.             picMainpos.pR = False
  1331.          End If
  1332.       End If
  1333.       If Not picGate.bWidth Then picMain.Left = 0
  1334.       If Not picGate.bHeight Then picMain.Top = 0
  1335.    
  1336.    Case 4
  1337.       If picZoom.Visible = True Then
  1338.          If Not picGate.bHeight Then
  1339.             If Not picMainpos.pt Then picZoom.Top = picZoom.Top + picMain.Top 'picmain is negative
  1340.             picMainpos.pt = True
  1341.             picMainpos.pB = False
  1342.          End If
  1343.          If Not picGate.bWidth Then
  1344.             If Not picMainpos.pR Then picZoom.Left = picZoom.Left + (SizeDiff.sWidth + picMain.Left)
  1345.             picMainpos.pR = True
  1346.             picMainpos.pL = False
  1347.          End If
  1348.       End If
  1349.       If Not picGate.bHeight Then picMain.Top = 0
  1350.       If Not picGate.bWidth Then picMain.Left = -SizeDiff.sWidth
  1351.    
  1352.    Case 5
  1353.       tmrScrollLeft.Enabled = False
  1354.    Case 6
  1355.       tmrScrollRight.Enabled = False
  1356.    Case 7
  1357.       tmrScrollUp.Enabled = False
  1358.    Case 8
  1359.       tmrScrollDown.Enabled = False
  1360.    Case 9
  1361.       If picMain.Picture = 0 Then Exit Sub
  1362.       If picZoom.Visible = True Then picZoom.Visible = False
  1363.       PaintZoomGlass
  1364. End Select
  1365.  
  1366. If picZoom.Visible = True Then PaintZoomGlass
  1367. PositionInsertGlass
  1368. End Sub
  1369.  
  1370. Private Sub picInsert_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  1371. If Button = 1 Then
  1372.     tmrInsert.Enabled = True
  1373. End If
  1374. End Sub
  1375.  
  1376. Private Sub picInsert_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  1377. If Button = 1 Then
  1378.     ReleaseCapture  ' <--- Kills the MouseUp Event so no need for MouseUp
  1379.     SendMessage picInsert.hwnd, &HA1, 2, 0&
  1380. End If
  1381. End Sub
  1382.  
  1383. Private Sub picMain_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  1384. ' Sanity checks
  1385. tmrZoom.Enabled = False
  1386. tmrInsert.Enabled = False
  1387. End Sub
  1388.  
  1389. Private Sub picPosition_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  1390. tmrInsert.Enabled = False
  1391. End Sub
  1392.  
  1393. Private Sub picZoom_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  1394. If Button = 1 Then
  1395.     tmrZoom.Enabled = True
  1396.     DoEvents
  1397.  Else
  1398.     picZoom.Visible = False
  1399.     tmrZoom.Enabled = False
  1400. End If
  1401. End Sub
  1402.  
  1403. Private Sub picZoom_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  1404. If Button = 1 Then
  1405.     ReleaseCapture  ' <--- Kills the MouseUp Event so no need for MouseUp
  1406.     SendMessage picZoom.hwnd, &HA1, 2, 0&
  1407. End If
  1408. End Sub
  1409.  
  1410. Private Sub PositionInsertGlass()
  1411. Dim PercentPictureTop As Integer
  1412. Dim PercentPictureLeft As Integer
  1413.  
  1414. PercentPictureTop = (100 / SizeDiff.sHeight) * -picMain.Top
  1415. PercentPictureLeft = (100 / SizeDiff.sWidth) * -picMain.Left
  1416.  
  1417. With picInsert
  1418.    .Top = ((picPosition.Height - 2 - .Height) / 100) * PercentPictureTop
  1419.    .Left = ((picPosition.Width - 2 - .Width) / 100) * PercentPictureLeft
  1420. End With
  1421. End Sub
  1422.  
  1423. Private Sub tmrScrollLeft_Timer()
  1424. If picGate.bWidth Then Exit Sub
  1425. If picMain.Left = 0 Then Exit Sub
  1426. With picMain
  1427.     .Left = .Left + mScrollSpeed
  1428.     picZoom.Left = picZoom.Left - mScrollSpeed
  1429.     If .Left > 0 Then
  1430.        .Left = 0
  1431.        tmrScrollDown.Enabled = False
  1432.     End If
  1433. End With
  1434. If picZoom.Visible = True Then PaintZoomGlass
  1435. PositionInsertGlass
  1436. End Sub
  1437.  
  1438. Private Sub tmrScrollRight_Timer()
  1439. If picGate.bWidth Then Exit Sub
  1440. If picMain.Left = -SizeDiff.sWidth Then Exit Sub
  1441. With picMain
  1442.     .Left = .Left - mScrollSpeed
  1443.     picZoom.Left = picZoom.Left + mScrollSpeed
  1444.     If .Left < -SizeDiff.sWidth Then
  1445.        .Left = -SizeDiff.sWidth
  1446.        tmrScrollLeft.Enabled = False
  1447.     End If
  1448. End With
  1449. If picZoom.Visible = True Then PaintZoomGlass
  1450. PositionInsertGlass
  1451. End Sub
  1452.  
  1453. Private Sub tmrScrollUp_Timer()
  1454. If picGate.bHeight Then Exit Sub
  1455. If picMain.Top = 0 Then Exit Sub
  1456. With picMain
  1457.     .Top = .Top + mScrollSpeed
  1458.     picZoom.Top = picZoom.Top - mScrollSpeed
  1459.     If .Top > 0 Then
  1460.        .Top = 0
  1461.        tmrScrollDown.Enabled = False
  1462.     End If
  1463. End With
  1464. If picZoom.Visible = True Then PaintZoomGlass
  1465. PositionInsertGlass
  1466. End Sub
  1467.  
  1468. Private Sub tmrScrollDown_Timer()
  1469. If picGate.bHeight Then Exit Sub
  1470. If picMain.Top = -SizeDiff.sHeight Then Exit Sub
  1471. With picMain
  1472.     .Top = .Top - mScrollSpeed
  1473.     picZoom.Top = picZoom.Top + mScrollSpeed
  1474.     If .Top < -SizeDiff.sHeight Then
  1475.        .Top = -SizeDiff.sHeight
  1476.        tmrScrollUp.Enabled = False
  1477.     End If
  1478. End With
  1479. If picZoom.Visible = True Then PaintZoomGlass
  1480. PositionInsertGlass
  1481. End Sub
  1482.  
  1483. Private Sub tmrZoom_Timer()
  1484. Dim cursor As POINTAPI
  1485.  
  1486. GetCursorPos cursor
  1487. With picZoom
  1488.     Select Case .Top
  1489.         Case Is < 0
  1490.             cursor.Y = cursor.Y + -.Top
  1491.             SetCursorPos cursor.X, cursor.Y
  1492.         Case Is > picMain.Height - .Height
  1493.             cursor.Y = cursor.Y - (.Top - (picMain.Height - .Height))
  1494.             SetCursorPos cursor.X, cursor.Y
  1495.     End Select
  1496.     Select Case .Left
  1497.        Case Is < 0
  1498.           cursor.X = cursor.X + -.Left
  1499.           SetCursorPos cursor.X, cursor.Y
  1500.        Case Is > picMain.Width - .Width
  1501.           cursor.X = cursor.X - (.Left - (picMain.Width - .Width))
  1502.           SetCursorPos cursor.X, cursor.Y
  1503.     End Select
  1504.     DoEvents
  1505.     ' Sanity checks
  1506.     ' NOTE:
  1507.     ' By restting the cursor position this automatically repositions the picZoom.PictureBox
  1508.     ' If the cursor repositions followed by the mouse being released before the
  1509.     ' picturebox repositions itself under the cursor, the picturebox is left behind or
  1510.     ' 'partially offscreen'. Thus the cursor runs away...
  1511.     ' By checking the picturebox has repositioned here after SetCursorPos and DoEvents
  1512.     ' we can be sure that the picturebox is repositioned as well as the cursor!!!!
  1513.     Select Case .Top
  1514.         Case Is < 0
  1515.             .Top = .Top + -.Top
  1516.         Case Is > picMain.Height - .Height
  1517.             .Top = .Top - (.Top - (picMain.Height - .Height))
  1518.     End Select
  1519.     Select Case .Left
  1520.         Case Is < 0
  1521.           .Left = .Left + -.Left
  1522.         Case Is > picMain.Width - .Width
  1523.           .Left = .Left - (.Left - (picMain.Width - .Width))
  1524.     End Select
  1525. End With
  1526. PaintZoomGlass
  1527. End Sub
  1528.  
  1529. Private Sub tmrInsert_Timer()
  1530. Dim cursor As POINTAPI
  1531. Dim PercentPictureTop As Single
  1532. Dim PercentPictureLeft As Single
  1533.  
  1534. GetCursorPos cursor
  1535. With picInsert
  1536.     Select Case .Top
  1537.         Case Is < 0
  1538.             cursor.Y = cursor.Y + -.Top
  1539.             SetCursorPos cursor.X, cursor.Y
  1540.         Case Is > picPosition.Height - .Height - 2
  1541.             cursor.Y = cursor.Y - (.Top - (picPosition.Height - .Height - 2))
  1542.             SetCursorPos cursor.X, cursor.Y
  1543.     End Select
  1544.     Select Case .Left
  1545.        Case Is < 0
  1546.           cursor.X = cursor.X + -.Left
  1547.           SetCursorPos cursor.X, cursor.Y
  1548.        Case Is > picPosition.Width - .Width - 2
  1549.           cursor.X = cursor.X - (.Left - (picPosition.Width - .Width - 2))
  1550.           SetCursorPos cursor.X, cursor.Y
  1551.     End Select
  1552.     DoEvents
  1553.     ' Sanity checks
  1554.     ' NOTE:
  1555.     ' By restting the cursor position this automatically repositions the picZoom.PictureBox
  1556.     ' If the cursor repositions followed by the mouse being released before the
  1557.     ' picturebox repositions itself under the cursor, the picturebox is left behind or
  1558.     ' 'partially offscreen'. Thus the cursor runs away...
  1559.     ' By checking the picturebox has repositioned here after SetCursorPos and DoEvents
  1560.     ' we can be sure that the picturebox is repositioned as well as the cursor!!!!
  1561.     Select Case .Top
  1562.         Case Is < 0
  1563.             .Top = .Top + -.Top
  1564.         Case Is > picPosition.Height - .Height - 2
  1565.             .Top = .Top - (.Top - (picPosition.Height - .Height - 2))
  1566.     End Select
  1567.     Select Case .Left
  1568.         Case Is < 0
  1569.           .Left = .Left + -.Left
  1570.         Case Is > picPosition.Width - .Width - 2
  1571.           .Left = .Left - (.Left - (picPosition.Width - .Width - 2))
  1572.     End Select
  1573.     PaintInsertGlass
  1574.     ' reposition main picture
  1575.     PercentPictureTop = (100 / (picPosition.Height - 2 - .Height)) * .Top
  1576.     PercentPictureLeft = (100 / (picPosition.Width - 2 - .Width)) * .Left
  1577. End With
  1578.  
  1579. picMain.Top = -((SizeDiff.sHeight / 100) * PercentPictureTop)
  1580. picMain.Left = -((SizeDiff.sWidth / 100) * PercentPictureLeft)
  1581. End Sub
  1582.