home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 3_2004-2005.ISO / Data / Zips / VB_Recent_1869643302005.psc / fRecent.frm < prev   
Text File  |  2005-03-30  |  45KB  |  1,299 lines

  1. VERSION 5.00
  2. Begin VB.Form fRecent 
  3.    BackColor       =   &H00E8E0E0&
  4.    BorderStyle     =   1  'Fest Einfach
  5.    ClientHeight    =   3975
  6.    ClientLeft      =   45
  7.    ClientTop       =   390
  8.    ClientWidth     =   11220
  9.    Icon            =   "fRecent.frx":0000
  10.    LinkTopic       =   "Form1"
  11.    MaxButton       =   0   'False
  12.    ScaleHeight     =   3975
  13.    ScaleWidth      =   11220
  14.    Begin VB.PictureBox picSortBy 
  15.       BackColor       =   &H0080C0FF&
  16.       BorderStyle     =   0  'Kein
  17.       Height          =   1590
  18.       Left            =   4373
  19.       ScaleHeight     =   1590
  20.       ScaleWidth      =   2490
  21.       TabIndex        =   12
  22.       Top             =   1192
  23.       Width           =   2490
  24.       Begin VB.OptionButton optFN 
  25.          BackColor       =   &H0080C0FF&
  26.          ForeColor       =   &H00004080&
  27.          Height          =   195
  28.          Left            =   405
  29.          TabIndex        =   14
  30.          Top             =   465
  31.          Width           =   195
  32.       End
  33.       Begin VB.OptionButton optPN 
  34.          BackColor       =   &H0080C0FF&
  35.          ForeColor       =   &H00004080&
  36.          Height          =   195
  37.          Left            =   405
  38.          TabIndex        =   16
  39.          Top             =   780
  40.          Width           =   195
  41.       End
  42.       Begin VB.OptionButton optCH 
  43.          BackColor       =   &H0080C0FF&
  44.          ForeColor       =   &H00004080&
  45.          Height          =   195
  46.          Left            =   405
  47.          TabIndex        =   18
  48.          Top             =   1095
  49.          Value           =   -1  'True
  50.          Width           =   195
  51.       End
  52.       Begin VB.Label lbClose 
  53.          Alignment       =   2  'Zentriert
  54.          BackColor       =   &H000000FF&
  55.          Caption         =   "r"
  56.          BeginProperty Font 
  57.             Name            =   "Marlett"
  58.             Size            =   9.75
  59.             Charset         =   2
  60.             Weight          =   700
  61.             Underline       =   0   'False
  62.             Italic          =   0   'False
  63.             Strikethrough   =   0   'False
  64.          EndProperty
  65.          ForeColor       =   &H00C0FFFF&
  66.          Height          =   195
  67.          Left            =   2220
  68.          TabIndex        =   20
  69.          ToolTipText     =   "Close"
  70.          Top             =   75
  71.          Width           =   210
  72.       End
  73.       Begin VB.Label lb 
  74.          Alignment       =   1  'Rechts
  75.          BackColor       =   &H00FFFFFF&
  76.          BackStyle       =   0  'Transparent
  77.          Caption         =   "chronologically"
  78.          ForeColor       =   &H00004080&
  79.          Height          =   195
  80.          Index           =   2
  81.          Left            =   585
  82.          TabIndex        =   17
  83.          Top             =   1095
  84.          Width           =   1140
  85.       End
  86.       Begin VB.Label lb 
  87.          Alignment       =   1  'Rechts
  88.          BackColor       =   &H00000000&
  89.          BackStyle       =   0  'Transparent
  90.          Caption         =   "by Project Name"
  91.          ForeColor       =   &H00004080&
  92.          Height          =   195
  93.          Index           =   1
  94.          Left            =   585
  95.          TabIndex        =   15
  96.          Top             =   780
  97.          Width           =   1260
  98.       End
  99.       Begin VB.Label lb 
  100.          Alignment       =   1  'Rechts
  101.          BackColor       =   &H00000000&
  102.          BackStyle       =   0  'Transparent
  103.          Caption         =   "by Path Name"
  104.          ForeColor       =   &H00004080&
  105.          Height          =   195
  106.          Index           =   0
  107.          Left            =   600
  108.          TabIndex        =   13
  109.          Top             =   465
  110.          Width           =   1095
  111.       End
  112.       Begin VB.Line ln 
  113.          BorderColor     =   &H0000A0FF&
  114.          BorderWidth     =   3
  115.          Index           =   0
  116.          X1              =   45
  117.          X2              =   2505
  118.          Y1              =   1560
  119.          Y2              =   1560
  120.       End
  121.       Begin VB.Line ln 
  122.          BorderColor     =   &H0000A0FF&
  123.          BorderWidth     =   3
  124.          Index           =   1
  125.          X1              =   2460
  126.          X2              =   2460
  127.          Y1              =   30
  128.          Y2              =   1530
  129.       End
  130.       Begin VB.Line ln 
  131.          BorderColor     =   &H00C0E0FF&
  132.          BorderWidth     =   3
  133.          Index           =   3
  134.          X1              =   15
  135.          X2              =   15
  136.          Y1              =   0
  137.          Y2              =   1605
  138.       End
  139.       Begin VB.Line ln 
  140.          BorderColor     =   &H00C0E0FF&
  141.          BorderWidth     =   3
  142.          Index           =   2
  143.          X1              =   0
  144.          X2              =   2445
  145.          Y1              =   15
  146.          Y2              =   15
  147.       End
  148.       Begin VB.Label lbTitle 
  149.          BackColor       =   &H00000000&
  150.          BackStyle       =   0  'Transparent
  151.          Caption         =   "Sort..."
  152.          BeginProperty Font 
  153.             Name            =   "MS Sans Serif"
  154.             Size            =   9.75
  155.             Charset         =   0
  156.             Weight          =   700
  157.             Underline       =   0   'False
  158.             Italic          =   0   'False
  159.             Strikethrough   =   0   'False
  160.          EndProperty
  161.          ForeColor       =   &H00004080&
  162.          Height          =   240
  163.          Left            =   210
  164.          TabIndex        =   19
  165.          Top             =   135
  166.          Width           =   615
  167.       End
  168.    End
  169.    Begin VB.CommandButton btSave 
  170.       Caption         =   "Up&date"
  171.       Height          =   420
  172.       Left            =   4050
  173.       TabIndex        =   26
  174.       ToolTipText     =   "Store long path names in registry"
  175.       Top             =   3405
  176.       Width           =   1050
  177.    End
  178.    Begin VB.PictureBox picSep 
  179.       Appearance      =   0  '2D
  180.       BackColor       =   &H80000005&
  181.       ForeColor       =   &H80000008&
  182.       Height          =   390
  183.       Left            =   5985
  184.       ScaleHeight     =   360
  185.       ScaleWidth      =   0
  186.       TabIndex        =   25
  187.       Top             =   3420
  188.       Width           =   15
  189.    End
  190.    Begin VB.PictureBox picFire 
  191.       BorderStyle     =   0  'Kein
  192.       Height          =   180
  193.       Left            =   9480
  194.       ScaleHeight     =   180
  195.       ScaleWidth      =   165
  196.       TabIndex        =   23
  197.       Top             =   3765
  198.       Width           =   165
  199.       Begin VB.Label lbFire 
  200.          BackColor       =   &H00E0E0E0&
  201.          Caption         =   "±"
  202.          BeginProperty Font 
  203.             Name            =   "Wingdings"
  204.             Size            =   11.25
  205.             Charset         =   2
  206.             Weight          =   400
  207.             Underline       =   0   'False
  208.             Italic          =   0   'False
  209.             Strikethrough   =   0   'False
  210.          EndProperty
  211.          Height          =   255
  212.          Left            =   -15
  213.          TabIndex        =   24
  214.          ToolTipText     =   "Light my fire..."
  215.          Top             =   -30
  216.          Width           =   210
  217.       End
  218.    End
  219.    Begin VB.CommandButton btUndo 
  220.       Caption         =   " &Undo"
  221.       Height          =   420
  222.       Left            =   5925
  223.       TabIndex        =   22
  224.       ToolTipText     =   "Can't undo"
  225.       Top             =   3405
  226.       Width           =   645
  227.    End
  228.    Begin VB.CommandButton btDone 
  229.       Cancel          =   -1  'True
  230.       Caption         =   "&E&xit"
  231.       Height          =   420
  232.       Left            =   9930
  233.       TabIndex        =   7
  234.       ToolTipText     =   "Good bye"
  235.       Top             =   3405
  236.       Width           =   1080
  237.    End
  238.    Begin VB.CommandButton btRunVB6 
  239.       Caption         =   "Launch &VB6"
  240.       Height          =   420
  241.       Left            =   8100
  242.       MaskColor       =   &H00FFFFFF&
  243.       TabIndex        =   5
  244.       ToolTipText     =   "Run VB6"
  245.       Top             =   3405
  246.       UseMaskColor    =   -1  'True
  247.       Width           =   1320
  248.    End
  249.    Begin VB.CommandButton btResetSel 
  250.       Caption         =   "Reset &Selection"
  251.       Height          =   420
  252.       Left            =   6675
  253.       TabIndex        =   4
  254.       ToolTipText     =   "Remove selection bar"
  255.       Top             =   3405
  256.       Width           =   1320
  257.    End
  258.    Begin VB.Timer tmrCheckTask 
  259.       Enabled         =   0   'False
  260.       Interval        =   1000
  261.       Left            =   2385
  262.       Top             =   60
  263.    End
  264.    Begin VB.CheckBox ckKeep 
  265.       Alignment       =   1  'Rechts ausgerichtet
  266.       BackColor       =   &H00E8E0E0&
  267.       Caption         =   "&Keep me alive"
  268.       ForeColor       =   &H00008000&
  269.       Height          =   195
  270.       Left            =   9705
  271.       TabIndex        =   2
  272.       ToolTipText     =   "Pop up again after VB terminates"
  273.       Top             =   165
  274.       Value           =   1  'Aktiviert
  275.       Width           =   1320
  276.    End
  277.    Begin VB.CheckBox ckAll 
  278.       BackColor       =   &H00E8E0E0&
  279.       ForeColor       =   &H00000000&
  280.       Height          =   240
  281.       Left            =   225
  282.       TabIndex        =   1
  283.       ToolTipText     =   "Select/Unselect all"
  284.       Top             =   135
  285.       Width           =   1605
  286.    End
  287.    Begin VB.ListBox lstRecentProjects 
  288.       BackColor       =   &H00F4FBFF&
  289.       ForeColor       =   &H00000000&
  290.       Height          =   2760
  291.       Left            =   180
  292.       Style           =   1  'KontrollkΣstchen
  293.       TabIndex        =   0
  294.       Top             =   495
  295.       Width           =   10830
  296.    End
  297.    Begin VB.CommandButton btRemove 
  298.       Caption         =   "&Remove"
  299.       Height          =   420
  300.       Left            =   5220
  301.       TabIndex        =   6
  302.       ToolTipText     =   "Remove checkmarked items from list"
  303.       Top             =   3405
  304.       Width           =   825
  305.    End
  306.    Begin VB.PictureBox picRocket 
  307.       BorderStyle     =   0  'Kein
  308.       Height          =   270
  309.       Left            =   9495
  310.       Picture         =   "fRecent.frx":08CA
  311.       ScaleHeight     =   270
  312.       ScaleWidth      =   135
  313.       TabIndex        =   21
  314.       Top             =   3450
  315.       Width           =   135
  316.    End
  317.    Begin VB.Shape shp 
  318.       BorderColor     =   &H0000FFFF&
  319.       BorderWidth     =   2
  320.       Height          =   3960
  321.       Left            =   15
  322.       Top             =   15
  323.       Width           =   11205
  324.    End
  325.    Begin VB.Image imgUMG 
  326.       Height          =   630
  327.       Left            =   120
  328.       Picture         =   "fRecent.frx":0BE4
  329.       Top             =   3285
  330.       Width           =   675
  331.    End
  332.    Begin VB.Label lbName 
  333.       AutoSize        =   -1  'True
  334.       BackColor       =   &H00000000&
  335.       BackStyle       =   0  'Transparent
  336.       Caption         =   "Name:"
  337.       ForeColor       =   &H00606060&
  338.       Height          =   195
  339.       Index           =   1
  340.       Left            =   4470
  341.       TabIndex        =   11
  342.       ToolTipText     =   "Project name"
  343.       Top             =   165
  344.       Visible         =   0   'False
  345.       Width           =   465
  346.    End
  347.    Begin VB.Label lbName 
  348.       BackColor       =   &H00000000&
  349.       BackStyle       =   0  'Transparent
  350.       BeginProperty Font 
  351.          Name            =   "MS Sans Serif"
  352.          Size            =   8.25
  353.          Charset         =   0
  354.          Weight          =   700
  355.          Underline       =   0   'False
  356.          Italic          =   0   'False
  357.          Strikethrough   =   0   'False
  358.       EndProperty
  359.       ForeColor       =   &H00000000&
  360.       Height          =   195
  361.       Index           =   0
  362.       Left            =   4980
  363.       TabIndex        =   10
  364.       Top             =   165
  365.       Width           =   4485
  366.    End
  367.    Begin VB.Label lbBrokenLinks 
  368.       BackColor       =   &H00000000&
  369.       BackStyle       =   0  'Transparent
  370.       Caption         =   "  "
  371.       BeginProperty Font 
  372.          Name            =   "MS Sans Serif"
  373.          Size            =   8.25
  374.          Charset         =   0
  375.          Weight          =   700
  376.          Underline       =   0   'False
  377.          Italic          =   0   'False
  378.          Strikethrough   =   0   'False
  379.       EndProperty
  380.       ForeColor       =   &H000000C0&
  381.       Height          =   195
  382.       Left            =   2040
  383.       TabIndex        =   9
  384.       Top             =   165
  385.       Width           =   2130
  386.    End
  387.    Begin VB.Label lb 
  388.       BackColor       =   &H00000000&
  389.       BackStyle       =   0  'Transparent
  390.       Caption         =   "Γ"
  391.       BeginProperty Font 
  392.          Name            =   "Wingdings"
  393.          Size            =   8.25
  394.          Charset         =   2
  395.          Weight          =   700
  396.          Underline       =   0   'False
  397.          Italic          =   0   'False
  398.          Strikethrough   =   0   'False
  399.       EndProperty
  400.       ForeColor       =   &H000000C0&
  401.       Height          =   180
  402.       Index           =   4
  403.       Left            =   225
  404.       TabIndex        =   8
  405.       Top             =   345
  406.       Width           =   165
  407.    End
  408.    Begin VB.Label lb 
  409.       BackColor       =   &H00000000&
  410.       BackStyle       =   0  'Transparent
  411.       Caption         =   "Checkmark the item(s)  you wish to remove from this list and click  [Remove].  Or select a project and click  [Launch VB6]."
  412.       BeginProperty Font 
  413.          Name            =   "Small Fonts"
  414.          Size            =   6.75
  415.          Charset         =   0
  416.          Weight          =   400
  417.          Underline       =   0   'False
  418.          Italic          =   0   'False
  419.          Strikethrough   =   0   'False
  420.       EndProperty
  421.       ForeColor       =   &H00606060&
  422.       Height          =   510
  423.       Index           =   3
  424.       Left            =   1035
  425.       TabIndex        =   3
  426.       Top             =   3345
  427.       Width           =   2700
  428.    End
  429. End
  430. Attribute VB_Name = "fRecent"
  431. Attribute VB_GlobalNameSpace = False
  432. Attribute VB_Creatable = False
  433. Attribute VB_PredeclaredId = True
  434. Attribute VB_Exposed = False
  435. Option Explicit
  436.  
  437. Private Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
  438. Private Declare Function CloseHandle Lib "Kernel32" (ByVal hObject As Long) As Long
  439. Private Declare Function CreateRectRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long) As Long
  440. Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  441. Private Declare Function GetClassLong Lib "user32" Alias "GetClassLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  442. Private Declare Function GetLongPathName Lib "Kernel32" Alias "GetLongPathNameA" (ByVal lpszShortPath As String, ByVal lpszLongPath As String, ByVal cchBuffer As Long) As Long
  443. Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long 'used to get the 'other button'
  444. Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, ByRef lpRect As RECT) As Long
  445. Private Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
  446. Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
  447. Private Declare Function OpenProcess Lib "Kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  448. Private Declare Function PutFocus Lib "user32" Alias "SetFocus" (ByVal hWnd As Long) As Long
  449. Private Declare Function ReleaseCapture Lib "user32" () As Long
  450. Private Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  451. Private Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long
  452. Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
  453. Private Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAboutA" (ByVal hWnd As Long, ByVal szApp As String, ByVal szOtherStuff As String, ByVal hIcon As Long) As Long
  454. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
  455. Private Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As Long)
  456. Private Enum ApiConstants
  457.     CS_DROPSHADOW = &H20000
  458.     GCL_STYLE = -26
  459.     GCL_HCURSOR = -12
  460.     SM_SWAPBUTTON = 23
  461.     CsrArrow = 32512
  462.     CsrRightHand = 32649
  463.     PROCESS_ALL_ACCESS = &H1F0FFF
  464.     SW_SHOWNORMAL = 1
  465.     SE_NO_ERROR = 33 'Values below 33 are error returns
  466. End Enum
  467. #If False Then
  468. Private CS_DROPSHADOW, GCL_STYLE, GCL_HCURSOR, SM_SWAPBUTTON, CsrArrow, CsrRightHand, PROCESS_ALL_ACCESS, SW_SHOWNORMAL, SE_NO_ERROR
  469. #End If
  470.  
  471. Private Type RECT
  472.     Left    As Long
  473.     Top     As Long
  474.     Right   As Long
  475.     Bottom  As Long
  476. End Type
  477. Private WindowRect   As RECT
  478.  
  479. Private PrevCursor          As Long
  480. Private Const BurningFileName   As String = "BurningMatch.ani"
  481.  
  482. Private Enum SortBy
  483.     Chrono = 0
  484.     ByProjName = 1
  485.     ByFileName = 2
  486. End Enum
  487. #If False Then
  488. Private Chrono, ByProjName, ByFileName
  489. #End If
  490. Private SortOpt             As SortBy
  491.  
  492. Private strCount            As String
  493. Private RecentProjectFile   As String
  494. Private Const RecentFiles   As String = "Software\Microsoft\Visual Basic\6.0\RecentFiles"
  495. Private Const Arrow         As String = " --> "
  496. Private Const Backslash     As String = "\"
  497. Private Const Unknown       As String = "(unknown)"
  498. Private Const GrpNameExt    As String = ".vbg"
  499. Private Const ProjGroup     As String = "[Project Group]"
  500. Private Const Oops          As String = "Ooops..."
  501.  
  502. Private UndoBuffer()        As Variant
  503. Private UndoPointer         As Long
  504. Private UndoMode            As Boolean
  505.  
  506. Private lstTopIndex         As Long 'listbox top index
  507. Private Idx                 As Long 'just an index used all over the place
  508. Private hRgn                As Long
  509. Private Internal            As Boolean 'prevents avalanche effects
  510. Private InCheckBox          As Boolean 'true when the user clicks the checkmark in the listbox
  511.  
  512. Private Enum SortElemMembers
  513.     ProjFileName = 0
  514.     ProjName = 1
  515.     BrokenLink = 2
  516.     OriginalSeq = 3
  517.     PosnInListbox = 4
  518.     PosnInReg = 5
  519.     Expand = 6
  520. End Enum
  521. #If False Then
  522. Private ProjFileName, ProjName, BrokenLink, OriginalSeq, PosnInListbox, PosnInReg, Expand
  523. #End If
  524.  
  525. Private Enum AnimConsts
  526.     Grow = 1
  527.     Shrink = 2
  528. End Enum
  529. #If False Then
  530. Private Grow, Shrink
  531. #End If
  532.  
  533. Private Sub Anim(Cntl As Control, ByVal AnimType As AnimConsts)
  534.  
  535.   Dim DeltaX    As Single
  536.   Dim DeltaY    As Single
  537.   Dim RgnLeft   As Single
  538.   Dim RgnTop    As Single
  539.   Dim RgnRight  As Single
  540.   Dim RgnBottom As Single
  541.   Const Delay   As Long = 900 'times DoEvents seems okay
  542.  
  543.     Select Case AnimType
  544.       Case Grow, Shrink
  545.         With Cntl
  546.             On Error Resume Next
  547.                 hRgn = .hWnd 'find out whether the cntl has an hWnd
  548.                 hRgn = Err
  549.             On Error GoTo 0
  550.  
  551.             If hRgn = 0 Then 'no error - has an hWnd
  552.  
  553.                 RgnRight = ScaleX(.Width, .Parent.ScaleMode, vbPixels) + 1
  554.                 RgnBottom = ScaleY(.Height, .Parent.ScaleMode, vbPixels) + 1
  555.                 DeltaX = IIf(AnimType = Grow, 1, -1)
  556.                 DeltaY = DeltaX * RgnBottom / RgnRight
  557.  
  558.                 If AnimType = Grow Then 'null-region in the center
  559.                     RgnLeft = RgnRight / 2
  560.                     RgnRight = RgnLeft
  561.                     RgnTop = RgnBottom / 2
  562.                     RgnBottom = RgnTop
  563.                   Else 'region is whole control area 'NOT ANIMTYPE...
  564.                     RgnLeft = 0
  565.                     RgnTop = 0
  566.                 End If
  567.  
  568.                 Do While .Visible And ((RgnLeft > 0 And AnimType = Grow) Or (RgnLeft < RgnRight And AnimType = Shrink))
  569.                     hRgn = CreateRectRgn(CLng(RgnLeft), CLng(RgnTop), CLng(RgnRight), CLng(RgnBottom))
  570.                     SetWindowRgn .hWnd, hRgn, True
  571.                     DeleteObject hRgn
  572.                     For hRgn = 1 To Delay
  573.                         DoEvents
  574.                     Next hRgn
  575.                     RgnLeft = RgnLeft - DeltaX
  576.                     RgnTop = RgnTop - DeltaY
  577.                     RgnRight = RgnRight + DeltaX
  578.                     RgnBottom = RgnBottom + DeltaY
  579.                 Loop
  580.  
  581.             End If
  582.         End With 'CNTL
  583.     End Select
  584.  
  585. End Sub
  586.  
  587. Private Sub btDone_Click()
  588.  
  589.     Tag = Leave
  590.     Hide
  591.  
  592. End Sub
  593.  
  594. Private Sub btDone_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  595.  
  596.     PutFocus lstRecentProjects.hWnd
  597.  
  598. End Sub
  599.  
  600. Private Sub btRemove_Click()
  601.  
  602.   Dim Renumber  As Long
  603.   Dim t         As Boolean
  604.  
  605.     With lstRecentProjects
  606.         .Enabled = .ListCount
  607.         If ManuallyAltered Or UndoMode Then
  608.             t = True
  609.           ElseIf .SelCount Then 'NOT MANUALLYALTERED...
  610.             t = (MsgBox("Are you sure you want to remove " & IIf(.ListCount = .SelCount, "ALL", NumToText(.SelCount) & " checkmarked") & " item" & IIf(.SelCount = 1, vbNullString, "s") & " from the Recent Projects List?", vbQuestion Or vbYesNo Or vbDefaultButton2, "Recent Projects") = vbYes)
  611.           Else '.SELCOUNT = FALSE/0
  612.             MsgBox "...you must checkmark the item(s) you wish to remove.", vbInformation, Oops
  613.         End If
  614.         If t Then
  615.             If RegOpenKeyEx(HKEY_CURRENT_USER, RecentFiles, REG_OPTION_RESERVED, KEY_SET_VALUE, KeyHandle) = ERROR_NONE Then
  616.  
  617.                 'delete them all from the registry
  618.                 For Idx = 1 To 100
  619.                     strCount = CStr(Idx)
  620.                     RegDeleteValue KeyHandle, strCount
  621.                 Next Idx
  622.  
  623.                 If UndoMode Then 'get them from the undo-buffer
  624.                     Idx = 0
  625.                     Do Until IsNull(UndoBuffer(Idx, UndoPointer))
  626.                         ReDim Preserve SortElems(0 To Idx)
  627.                         SortElems(Idx) = UndoBuffer(Idx, UndoPointer)
  628.                         Idx = Idx + 1
  629.                     Loop
  630.                     UndoPointer = UndoPointer - 1
  631.                   Else 'UNDOMODE = FALSE/0
  632.                     UndoPointer = UndoPointer + 1
  633.                     ReDim Preserve UndoBuffer(0 To 100, 1 To UndoPointer) '100th element is for the terminating  null
  634.                     For Idx = 0 To UBound(SortElems)
  635.                         UndoBuffer(Idx, UndoPointer) = SortElems(Idx)
  636.                     Next Idx
  637.                     UndoBuffer(Idx, UndoPointer) = Null 'terminating null
  638.                 End If
  639.  
  640.                 QuickSort OriginalSeq 'sort back into original sequence
  641.  
  642.                 'insert the non-checked (or saved-for-undo) items back into the registry
  643.                 For Idx = 0 To UBound(SortElems)
  644.                     If UndoMode Then
  645.                         t = True
  646.                       Else 'UNDOMODE = FALSE/0
  647.                         t = Not .Selected(SortElems(Idx)(PosnInListbox))
  648.                     End If
  649.                     If t Then
  650.                         Renumber = Renumber + 1
  651.                         RecentProjectFile = SortElems(Idx)(ProjFileName)
  652.                         strCount = CStr(Renumber)
  653.                         RegSetValueEx KeyHandle, strCount, 0&, REG_SZ, ByVal RecentProjectFile, Len(RecentProjectFile)
  654.                     End If
  655.                 Next Idx
  656.  
  657.                 RegCloseKey KeyHandle
  658.                 If ManuallyAltered Then
  659.                     Erase UndoBuffer
  660.                     UndoPointer = 0
  661.                 End If
  662.  
  663.                 UpdateUnDo
  664.                 LoadList '(re)load the listbox
  665.                 ProjToOpen = vbNullString 'no project to pass to vb
  666.               Else 'NOT REGOPENKEYEX(HKEY_CURRENT_USER,...
  667.                 MsgBox "...cannot locate the recent projects list anymore.", vbCritical, Oops
  668.             End If
  669.         End If
  670.  
  671.         ManuallyAltered = False
  672.         btRemove.Caption = "&Remove"
  673.         btRemove.ToolTipText = "Remove checkmarked items from list"
  674.         btRunVB6.Enabled = True
  675.         btSave.Enabled = True
  676.         ckAll.Enabled = True
  677.     End With 'LSTRECENTPROJECTS
  678.  
  679. End Sub
  680.  
  681. Private Sub btRemove_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  682.  
  683.     PutFocus lstRecentProjects.hWnd
  684.  
  685. End Sub
  686.  
  687. Private Sub btResetSel_Click()
  688.  
  689.     If btRunVB6.Enabled Or lbName(0) = Unknown Then
  690.         ResetToTop
  691.         ProjToOpen = vbNullString
  692.         lbName(0) = vbNullString
  693.         lbName(1).Visible = False
  694.         btRunVB6.Enabled = True
  695.     End If
  696.  
  697. End Sub
  698.  
  699. Private Sub btResetSel_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  700.  
  701.     lstTopIndex = SendMessage(lstRecentProjects.hWnd, LB_GETTOPINDEX, 0&, ByVal 0&) 'save the TopIndex
  702.  
  703. End Sub
  704.  
  705. Private Sub btResetSel_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  706.  
  707.     PutFocus lstRecentProjects.hWnd
  708.  
  709. End Sub
  710.  
  711. Private Sub btRunVB6_Click()
  712.  
  713.     Tag = RunVB 'return value
  714.     Sleep 300
  715.     Hide 'that's it...
  716.  
  717. End Sub
  718.  
  719. Private Sub btRunVB6_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  720.  
  721.     PutFocus lstRecentProjects.hWnd 'focus off the button
  722.  
  723. End Sub
  724.  
  725. Private Sub btSave_Click()
  726.  
  727.     If btSave.FontBold Then
  728.         ManuallyAltered = True
  729.         btRemove_Click
  730.         btSave.FontBold = False
  731.       Else 'BTSAVE.FONTBOLD = FALSE/0
  732.         MsgBox "...no pathnames have been converted.", vbInformation, Oops
  733.     End If
  734.  
  735. End Sub
  736.  
  737. Private Sub btSave_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  738.  
  739.     PutFocus lstRecentProjects.hWnd
  740.  
  741. End Sub
  742.  
  743. Private Sub btUndo_Click()
  744.  
  745.     If UndoPointer Then
  746.         UndoMode = True
  747.         btRemove_Click
  748.         UndoMode = False
  749.       Else 'UNDOPOINTER = FALSE/0
  750.         MsgBox "...can't undo - the undo buffer is empty, or it is exhausted because" & vbCrLf & _
  751.                "you have already undone all your deletions.", vbInformation, Oops
  752.     End If
  753.     UpdateUnDo
  754.  
  755. End Sub
  756.  
  757. Private Sub btUndo_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  758.  
  759.     PutFocus lstRecentProjects.hWnd
  760.  
  761. End Sub
  762.  
  763. Private Sub ckAll_Click()
  764.  
  765.     If Not Internal Then
  766.         Internal = True 'prevent avalanche
  767.         With lstRecentProjects
  768.             .Visible = False
  769.             lstTopIndex = SendMessage(.hWnd, LB_GETTOPINDEX, 0&, ByVal 0&) 'get top current indec
  770.             For Idx = 0 To .ListCount - 1
  771.                 .Selected(Idx) = (ckAll = vbChecked) 'check or uncheck
  772.             Next Idx
  773.             ResetToTop
  774.         End With 'LSTRECENTPROJECTS
  775.         btRemove.FontBold = lstRecentProjects.SelCount
  776.         Internal = False
  777.     End If
  778.  
  779. End Sub
  780.  
  781. Private Sub ckAll_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  782.  
  783.     Form_MouseMove 0, 0, 0, 0
  784.  
  785. End Sub
  786.  
  787. Private Sub ckKeep_Click()
  788.  
  789.     PutFocus lstRecentProjects.hWnd 'focus off checkbox
  790.  
  791. End Sub
  792.  
  793. Private Sub ckKeep_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  794.  
  795.     Form_MouseMove 0, 0, 0, 0
  796.  
  797. End Sub
  798.  
  799. Private Sub ConfineCursorIn(ByVal hWnd As Long)
  800.  
  801.     GetWindowRect hWnd, WindowRect
  802.     With WindowRect
  803.         .Left = .Left + 1
  804.         .Top = .Top + 1
  805.         .Right = .Right - 1
  806.         .Bottom = .Bottom - 1
  807.     End With 'WINDOWRECT
  808.     ClipCursor WindowRect
  809.  
  810. End Sub
  811.  
  812. Private Function ExpandPath(ByVal ShortFilename As String) As String
  813.  
  814.   'this is here thanks to LaVolpe
  815.  
  816.   Dim NumChars      As Long
  817.  
  818.     NumChars = GetLongPathName(ShortFilename, ExpandPath, 0)
  819.     If NumChars Then
  820.         ExpandPath = String$(NumChars, 0)
  821.         ExpandPath = Left$(ExpandPath, GetLongPathName(ShortFilename, ExpandPath, NumChars))
  822.       Else 'NumChars = FALSE/0
  823.         ExpandPath = ShortFilename
  824.     End If
  825.  
  826. End Function
  827.  
  828. Private Sub Form_Load()
  829.  
  830.   Const SnippOff As Long = 4
  831.  
  832.     Caption = App.ProductName & " V" & Version
  833.     With WindowRect
  834.  
  835.         .Left = 0
  836.         .Top = 0
  837.         .Right = ScaleX(btRemove.Width, ScaleMode, vbPixels) - SnippOff
  838.         .Bottom = ScaleY(btRemove.Height, ScaleMode, vbPixels)
  839.         hRgn = CreateRectRgn(.Left, .Top, .Right, .Bottom)
  840.         SetWindowRgn btRemove.hWnd, hRgn, True
  841.         DeleteObject hRgn
  842.  
  843.         .Left = SnippOff
  844.         .Right = ScaleX(btUndo.Width, ScaleMode, vbPixels)
  845.         hRgn = CreateRectRgn(.Left, .Top, .Right, .Bottom)
  846.         SetWindowRgn btUndo.hWnd, hRgn, True
  847.         DeleteObject hRgn
  848.  
  849.     End With 'WINDOWRECT
  850.     SetClassLong hWnd, GCL_STYLE, GetClassLong(hWnd, GCL_STYLE) Or CS_DROPSHADOW
  851.     lbClose_Click
  852.  
  853. End Sub
  854.  
  855. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  856.  
  857.     If Len(ProjToOpen) = 0 Then
  858.         lbName(0) = vbNullString
  859.         lbName(1).Visible = False
  860.         btRunVB6.Enabled = Not ManuallyAltered
  861.     End If
  862.     If Button >= 0 Then
  863.         SetCursor LoadCursor(0, CsrArrow)
  864.     End If
  865.  
  866. End Sub
  867.  
  868. Private Sub Form_Unload(Cancel As Integer)
  869.  
  870.     ClipCursor ByVal 0&
  871.  
  872. End Sub
  873.  
  874. Private Sub imgUMG_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  875.  
  876.     With App
  877.         If Button = vbLeftButton Then
  878.             ShellAbout hWnd, """" & .ProductName & """#Operating System:", .ProductName & " Version " & Version & vbCrLf & App.LegalCopyright, Me.Icon.Handle
  879.           Else 'NOT BUTTON...
  880.             If ShellExecute(hWnd, vbNullString, "mailto:UMGEDV@Yahoo.com?subject=" & .ProductName & " Version " & Version & " &body=Hi Ulli, " & vbCrLf & "[ MAIL TEXT ] " & vbCrLf & "Best regards from [ SENDER ]", vbNullString, App.Path, SW_SHOWNORMAL) < SE_NO_ERROR Then
  881.                 MsgBox "Cannot send Mail from this System.", vbCritical, "Mail disabled/not installed"
  882.             End If
  883.         End If
  884.     End With 'APP
  885.  
  886. End Sub
  887.  
  888. Private Sub imgUMG_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  889.  
  890.   Const LC As String = " LeftClick:"
  891.   Const RC As String = " RightClick:"
  892.   Const AB As String = " About Box "
  893.   Const MA As String = " Mail to Author "
  894.   Const HH As String = "--"
  895.  
  896.     If GetSystemMetrics(SM_SWAPBUTTON) Then
  897.         imgUMG.ToolTipText = RC & AB & HH & LC & MA
  898.       Else 'GETSYSTEMMETRICS(SM_SWAPBUTTON) = FALSE/0
  899.         imgUMG.ToolTipText = LC & AB & HH & RC & MA
  900.     End If
  901.     Form_MouseMove -1, 0, 0, 0
  902.     SetCursor LoadCursor(0, CsrRightHand)
  903.  
  904. End Sub
  905.  
  906. Private Sub lb_Click(Index As Integer)
  907.  
  908.     Select Case Index
  909.       Case 0 'proj file name
  910.         optFN = True
  911.       Case 1 'proj name
  912.         optPN = True
  913.       Case 2 'chrono
  914.         optCH = True
  915.     End Select
  916.  
  917. End Sub
  918.  
  919. Private Sub lb_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  920.  
  921.     Form_MouseMove 0, 0, 0, 0
  922.  
  923. End Sub
  924.  
  925. Private Sub lbClose_Click()
  926.  
  927.     Anim picSortBy, Shrink
  928.     picSortBy.Visible = False
  929.     ClipCursor ByVal 0&
  930.     PutFocus lstRecentProjects.hWnd
  931.  
  932. End Sub
  933.  
  934. Private Sub lbFire_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  935.  
  936.     If PrevCursor = 0 Then
  937.         PrevCursor = SetClassLong(picFire.hWnd, GCL_HCURSOR, LoadCursorFromFile(App.Path & "\" & BurningFileName))
  938.         ReleaseCapture
  939.         ConfineCursorIn picFire.hWnd
  940.     End If
  941.  
  942. End Sub
  943.  
  944. Private Sub lbFire_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  945.  
  946.   Dim Stepsize    As Long
  947.  
  948.     If PrevCursor Then
  949.         Sleep 2000
  950.         SetClassLong picFire.hWnd, GCL_HCURSOR, PrevCursor
  951.         PrevCursor = 0
  952.         lbFire.Enabled = False
  953.         ClipCursor ByVal 0&
  954.         Stepsize = ScaleY(1, vbPixels, ScaleMode)
  955.         lbFire.Enabled = False
  956.         With picRocket
  957.             For Idx = 1 To 8
  958.                 .Height = .Height + Stepsize
  959.                 Sleep 80
  960.                 .Refresh
  961.             Next Idx
  962.             For Idx = 1 To 50
  963.                 .Top = .Top - Stepsize
  964.                 Sleep 10
  965.                 DoEvents
  966.             Next Idx
  967.             .Top = ScaleHeight
  968.             Sleep 100
  969.             For Idx = 1 To 37
  970.                 .Top = .Top - Stepsize
  971.                 Sleep 10
  972.                 DoEvents
  973.             Next Idx
  974.             Sleep 333
  975.             For Idx = 1 To 8
  976.                 .Height = .Height - Stepsize
  977.                 Sleep 80
  978.                 DoEvents
  979.             Next Idx
  980.             Sleep 333
  981.         End With 'PICROCKET
  982.         lbFire.Enabled = True
  983.  
  984.         btRunVB6.Value = btRunVB6.Enabled
  985.     End If
  986.  
  987. End Sub
  988.  
  989. Private Sub lbTitle_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  990.  
  991.     picSortBy_MouseDown Button, Shift, X, Y
  992.  
  993. End Sub
  994.  
  995. Public Function LoadList() As Long
  996.  
  997.   Dim lIdx              As Long
  998.   Dim SeqNum            As Long
  999.   Dim DirLen            As Long
  1000.   Dim sSeqNum           As String
  1001.   Dim RPF               As String
  1002.   Dim Expanded          As Boolean
  1003.   Dim hFile             As Long
  1004.   Dim Ptr1              As Long
  1005.   Dim Ptr2              As Long
  1006.   Dim Ptr3              As Long
  1007.   Dim Ptr4              As Long
  1008.   Dim BrokenSeqPending  As Long
  1009.   Dim VBPText           As String
  1010.  
  1011.     If RegOpenKeyEx(HKEY_CURRENT_USER, RecentFiles, REG_OPTION_RESERVED, KEY_QUERY_VALUE, KeyHandle) = ERROR_NONE Then
  1012.         With lstRecentProjects
  1013.             .Clear
  1014.             For Idx = 0 To 99
  1015.                 strCount = CStr(Idx + 1)
  1016.                 RecentProjectFile = String$(512, 0)
  1017.                 DataLength = Len(RecentProjectFile)
  1018.                 If RegQueryValueEx(KeyHandle, strCount, REG_OPTION_RESERVED, DataType, ByVal RecentProjectFile, DataLength) = ERROR_NONE Then
  1019.                     sSeqNum = Format$(SeqNum, "000")
  1020.                     RPF = Left$(RecentProjectFile, DataLength + (Asc(Mid$(RecentProjectFile, DataLength, 1)) = 0))
  1021.                     RecentProjectFile = ExpandPath(RPF)
  1022.                     Expanded = Expanded Or (RPF <> RecentProjectFile)
  1023.                     ReDim Preserve SortElems(0 To SeqNum)
  1024.                     On Error Resume Next
  1025.                         DirLen = 0
  1026.                         DirLen = Len(Dir$(RecentProjectFile))
  1027.                     On Error GoTo 0
  1028.                     Select Case True
  1029.                       Case DirLen = 0  'broken link
  1030.                         SortElems(SeqNum) = Array(RecentProjectFile, Unknown, True, sSeqNum, 0, strCount, False)
  1031.                       Case StrComp(Right$(RecentProjectFile, Len(GrpNameExt)), GrpNameExt, vbTextCompare) = 0
  1032.                         SortElems(SeqNum) = Array(RecentProjectFile, ProjGroup, False, sSeqNum, 0, strCount, False)
  1033.                       Case Else
  1034.                         hFile = FreeFile
  1035.                         Open RecentProjectFile For Input As hFile
  1036.                         VBPText = vbNullString
  1037.                         On Error Resume Next
  1038.                             VBPText = Input$(LOF(hFile), hFile)
  1039.                         On Error GoTo 0
  1040.                         Close hFile
  1041.                         Ptr1 = InStr(1, VBPText, vbLf & "Name=") + 7
  1042.                         If Ptr1 = 7 Then
  1043.                             SortElems(SeqNum) = Array(RecentProjectFile, "[Not a Project File]", False, sSeqNum, 0, strCount, (RPF <> RecentProjectFile))
  1044.                           Else 'NOT PTR1...
  1045.                             Ptr2 = InStr(Ptr1, VBPText, vbCrLf) - 1
  1046.                             Ptr3 = InStr(1, VBPText, vbLf & "Description=") + 14
  1047.                             If Ptr3 = 14 Then 'no file description
  1048.                                 Ptr3 = 1
  1049.                                 Ptr4 = 1
  1050.                               Else 'NOT PTR3...
  1051.                                 Ptr4 = InStr(Ptr3, VBPText, vbCrLf) - 1
  1052.                             End If
  1053.                             SortElems(SeqNum) = Array(RecentProjectFile, Mid$(VBPText, Ptr1, Ptr2 - Ptr1) & IIf(Ptr3 <> Ptr4, " (" & Mid$(VBPText, Ptr3, Ptr4 - Ptr3) & ")", vbNullString), False, sSeqNum, 0, strCount, (RPF <> RecentProjectFile))
  1054.                         End If
  1055.                     End Select
  1056.                     SeqNum = SeqNum + 1
  1057.                     LoadList = BrokenSeqPending 'here comes more after a sequence break
  1058.                     btSave.FontBold = Expanded
  1059.                   Else 'NOT REGQUERYVALUEEX(KEYHANDLE,...
  1060.                     BrokenSeqPending = SeqNum + 1 'maybe this is a break in sequence
  1061.                 End If
  1062.             Next Idx
  1063.             RegCloseKey KeyHandle
  1064.  
  1065.             If SeqNum Then 'found some entries
  1066.                 Select Case SortOpt
  1067.                   Case ByFileName 'by proj file name
  1068.                     QuickSort ProjFileName 'sort on project file name
  1069.                   Case ByProjName 'by projname
  1070.                     QuickSort ProjName 'sort on project name
  1071.                 End Select
  1072.  
  1073.                 lIdx = -1
  1074.                 For Idx = 0 To UBound(SortElems)
  1075.                     Internal = True
  1076.                     .AddItem Val(SortElems(Idx)(PosnInReg)) & IIf(SortElems(Idx)(Expand), "+", "") & vbTab & Replace$(SortElems(Idx)(ProjFileName), Backslash, Arrow)
  1077.                     SortElems(Idx)(PosnInListbox) = Idx
  1078.                     .Selected(Idx) = SortElems(Idx)(BrokenLink)
  1079.                     Internal = False
  1080.                     If Quote & SortElems(Idx)(ProjFileName) & Quote = ProjToOpen Then
  1081.                         lIdx = Idx
  1082.                     End If
  1083.                 Next Idx
  1084.             End If
  1085.             .Enabled = .ListCount
  1086.             If .ListCount Then
  1087.                 .ListIndex = lIdx 'put (or hide) selection
  1088.                 If lIdx >= 0 Then
  1089.                     lbName(0) = SortElems(lIdx)(ProjName)
  1090.                 End If
  1091.             End If
  1092.             ckAll.Caption = "&All  (" & .ListCount & " item" & IIf(.ListCount <> 1, "s)", ")")
  1093.             lbBrokenLinks = IIf(.SelCount, "Found " & .SelCount & " broken link" & IIf(.SelCount = 1, vbNullString, "s"), vbNullString)
  1094.             lbBrokenLinks.ToolTipText = IIf(.SelCount, " Click [Remove]... ", vbNullString)
  1095.             btRemove.FontBold = .SelCount
  1096.         End With 'LSTRECENTPROJECTS
  1097.       Else 'NOT REGOPENKEYEX(HKEY_CURRENT_USER,...
  1098.         MsgBox "...cannot find the recent projects list.", vbCritical, Oops
  1099.     End If
  1100.  
  1101. End Function
  1102.  
  1103. Private Sub lstRecentProjects_Click()
  1104.  
  1105.     If Not Internal Then
  1106.         With lstRecentProjects
  1107.             If InCheckBox Then 'user clicked into checkbox
  1108.                 ResetToTop
  1109.                 ProjToOpen = vbNullString 'and no project to pass to vb
  1110.                 Internal = True 'prevent avalanche effect
  1111.                 ckAll = IIf(.SelCount = .ListCount, vbChecked, vbUnchecked) 'update all or nothing
  1112.                 Internal = False
  1113.               Else 'not into the checkbox 'INCHECKBOX = FALSE/0
  1114.                 If .ListIndex >= 0 Then 'user selected a project to pass to vb
  1115.                     .Selected(.ListIndex) = False
  1116.                     ProjToOpen = Quote & SortElems(.ListIndex)(ProjFileName) & Quote
  1117.                     lbName(0) = SortElems(.ListIndex)(ProjName)
  1118.                     lbName(1).Visible = True
  1119.                     btRunVB6.Enabled = (lbName(0) <> Unknown)
  1120.                 End If
  1121.             End If
  1122.             btRemove.FontBold = .SelCount
  1123.         End With 'LSTRECENTPROJECTS
  1124.     End If
  1125.  
  1126. End Sub
  1127.  
  1128. Private Sub lstRecentProjects_DblClick()
  1129.  
  1130.     btRunVB6 = btRunVB6.Enabled
  1131.  
  1132. End Sub
  1133.  
  1134. Private Sub lstRecentProjects_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  1135.  
  1136.     If Button = vbLeftButton Then
  1137.         With lstRecentProjects
  1138.             lstTopIndex = SendMessage(.hWnd, LB_GETTOPINDEX, 0&, ByVal 0&) 'save top index
  1139.             InCheckBox = (X <= ScaleX(11, vbPixels, ScaleMode)) 'inside the first left 11 pixel
  1140.             If Not InCheckBox Then
  1141.                 .Selected(.ListIndex) = False
  1142.             End If
  1143.         End With 'LSTRECENTPROJECTS
  1144.     End If
  1145.  
  1146. End Sub
  1147.  
  1148. Private Sub lstRecentProjects_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  1149.  
  1150.   Dim Posn      As Long
  1151.   Dim FP        As Long
  1152.   Const Rows    As Long = 12
  1153.  
  1154.     If Len(ProjToOpen) = 0 Then
  1155.         FP = ScaleY(4, vbPixels, ScaleMode)
  1156.         With lstRecentProjects
  1157.             If Y > FP And Y < .Height - FP - FP Then
  1158.                 Posn = SendMessage(.hWnd, LB_GETTOPINDEX, 0&, ByVal 0&) + (Y - FP) * Rows / (.Height - FP)
  1159.                 If Posn <= UBound(SortElems) Then
  1160.                     lbName(0) = SortElems(Posn)(ProjName)
  1161.                     lbName(1).Visible = True
  1162.                     btRunVB6.Enabled = (SortElems(Posn)(ProjName) <> Unknown)
  1163.                   Else 'NOT POSN...
  1164.                     lbName(0) = vbNullString
  1165.                     lbName(1).Visible = False
  1166.                     btRunVB6.Enabled = True
  1167.                 End If
  1168.             End If
  1169.         End With 'LSTRECENTPROJECTS
  1170.     End If
  1171.  
  1172. End Sub
  1173.  
  1174. Private Sub lstRecentProjects_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  1175.  
  1176.     If Button = vbRightButton Then
  1177.         Select Case SortOpt
  1178.           Case ByProjName
  1179.             optPN = True
  1180.           Case ByFileName
  1181.             optFN = True
  1182.           Case Chrono 'projname
  1183.             optCH = True
  1184.         End Select
  1185.         With picSortBy
  1186.             .Move lstRecentProjects.Left + X - optCH.Left - ScaleX(4, vbPixels, ScaleMode), lstRecentProjects.Top + Y - .Height / 2
  1187.             .Visible = True
  1188.             DoEvents
  1189.             Anim picSortBy, Grow
  1190.             ConfineCursorIn .hWnd
  1191.         End With 'PICSORTBY
  1192.         lbName(0) = vbNullString
  1193.         lbName(1).Visible = False
  1194.     End If
  1195.  
  1196. End Sub
  1197.  
  1198. Private Function NumToText(Num As Integer) As String
  1199.  
  1200.     If Num < 11 Then
  1201.         NumToText = Choose(Num, "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten")
  1202.       Else 'NOT NUM...
  1203.         NumToText = Num
  1204.     End If
  1205.  
  1206. End Function
  1207.  
  1208. Private Sub optCH_Click()
  1209.  
  1210.     SortOpt = Chrono
  1211.     ReloadList
  1212.  
  1213. End Sub
  1214.  
  1215. Private Sub optFN_Click()
  1216.  
  1217.     SortOpt = ByFileName
  1218.     ReloadList
  1219.  
  1220. End Sub
  1221.  
  1222. Private Sub optPN_Click()
  1223.  
  1224.     SortOpt = ByProjName
  1225.     ReloadList
  1226.  
  1227. End Sub
  1228.  
  1229. Private Sub picSortBy_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  1230.  
  1231.     If Button = vbLeftButton Then
  1232.         ReleaseCapture 'release the Mouse
  1233.         With picSortBy
  1234.             SendMessage .hWnd, WM_NCLBUTTONDOWN, HTCAPTION, ByVal 0& 'non-client area button down (in caption)
  1235.             ConfineCursorIn .hWnd
  1236.         End With 'PICSORTBY
  1237.     End If
  1238.  
  1239. End Sub
  1240.  
  1241. Private Sub ReloadList()
  1242.  
  1243.     LoadList
  1244.     lbClose_Click
  1245.  
  1246. End Sub
  1247.  
  1248. Private Sub ResetToTop()
  1249.  
  1250.     With lstRecentProjects
  1251.         .Visible = False
  1252.         .ListIndex = -1 'hide the selection
  1253.         SendMessage .hWnd, LB_SETTOPINDEX, lstTopIndex, ByVal 0&
  1254.         .Visible = True
  1255.         PutFocus .hWnd
  1256.     End With 'LSTRECENTPROJECTS
  1257.  
  1258. End Sub
  1259.  
  1260. Private Sub tmrCheckTask_Timer() 'once per second
  1261.  
  1262.   Dim hProcess  As Long
  1263.  
  1264.     hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, VBTaskId)
  1265.     If hProcess > 0 Then 'we have a process handle so VB is still running
  1266.         CloseHandle hProcess 'thats all we wanted to know so close the handle
  1267.       Else 'VB has gone 'NOT HPROCESS...
  1268.         tmrCheckTask.Enabled = False 'stop the timer
  1269.         ckAll = vbUnchecked
  1270.         Main '..and here we go again
  1271.     End If
  1272.  
  1273. End Sub
  1274.  
  1275. Private Sub UpdateUnDo()
  1276.  
  1277.     With btUndo
  1278.         If UndoPointer Then
  1279.             .ToolTipText = "Undo last deletion"
  1280.             .FontBold = True
  1281.           Else 'UNDOPOINTER = FALSE/0
  1282.             .ToolTipText = "Can't undo"
  1283.             .FontBold = False
  1284.         End If
  1285.     End With 'BTUNDO
  1286.  
  1287. End Sub
  1288.  
  1289. Private Function Version() As String
  1290.  
  1291.     With App
  1292.         Version = .Major & "." & .Minor & "." & .Revision
  1293.     End With 'APP
  1294.  
  1295. End Function
  1296.  
  1297. ':) Ulli's VB Code Formatter V2.18.4 (2005-Mrz-30 04:46)  Decl: 97  Code: 767  Total: 864 Lines
  1298. ':) CommentOnly: 3 (0,3%)  Commented: 89 (10,3%)  Empty: 178 (20,6%)  Max Logic Depth: 8
  1299.