Home All Groups Group Topic Archive Search About

Mayayana and others: Know The Notes now for 98SE using MM's new 'Never Replace' scheme

Author
29 May 2009 1:22 PM
MM
.....is now here: http://www.littletyke.myzen.co.uk/KTN98SE/index.html

Also note that you can open up a Run window and type:

c:\download\setupktn98se.exe /X

To peruse and/or extract any or all files from the Setup prior to
installation.

Leave a comment here as to how you got on, okay?

Thanks!

MM

Author
31 May 2009 3:07 PM
mayayana
> ....is now here: http://www.littletyke.myzen.co.uk/KTN98SE/index.html
>
> Leave a comment here as to how you got on, okay?
>

  OK, I tried this today. The program runs
fine if I just register the 3 3rd-party controls,
since I have VB installed. But I then unregistered
them to try an install. It worked fine. It didn't
overwrite any existing MS controls. (The install
log confirmed that.) It gave me the option to
remove the 3rd-party controls at uninstall, which
was nice.

  Four things of note:

1) The installer did not add the program to the
Uninstall key, so it wasn't in the Add/Remove
Programs list! I could only uninstall from the Start
Menu. As someone who routinely removes all of
the junk links from the Start Menu when installing
software, only keeping the actual program link,
that's a bit disconcerting.

2) The installer never gave me a chance to install
Desktop or QuickLaunch shortcuts. So the only
way to get to the program was through the Start Menu,
where many people will never find it.

3) Your custom buttons have a white line through
them on my display. (A recent vintage Dell LCD
monitor with VIA/S3G display adapter.)

4) The rounded corners of the forms look nice but
I see the tabs in the corners. Where they should
be transparent they're medium-dark gray.
Author
31 May 2009 4:31 PM
MM
On Sun, 31 May 2009 11:07:33 -0400, "mayayana" <mayaXXy***@rcXXn.com>
wrote:

>
>
>> ....is now here: http://www.littletyke.myzen.co.uk/KTN98SE/index.html
>>
>> Leave a comment here as to how you got on, okay?
>>
>

Thanks for the feedback. Now to each of your points:

>  OK, I tried this today. The program runs
>fine if I just register the 3 3rd-party controls,
>since I have VB installed. But I then unregistered
>them to try an install. It worked fine. It didn't
>overwrite any existing MS controls. (The install
>log confirmed that.) It gave me the option to
>remove the 3rd-party controls at uninstall, which
>was nice.

Good so far...

>
>  Four things of note:
>
>1) The installer did not add the program to the
>Uninstall key, so it wasn't in the Add/Remove
>Programs list! I could only uninstall from the Start
>Menu. As someone who routinely removes all of
>the junk links from the Start Menu when installing
>software, only keeping the actual program link,
>that's a bit disconcerting.

It's only recently that I investigated the Wise installer's uninstall
system and have to say that it's a little bit wanting. From the way
they implemented it, it sounds like a bit of an afterthought. I, too,
was surprised that the application didn't appear in Add/Remove
programs. Maybe I'll take (yet) another look at Inno, but, despite
what the author may say, it *isn't* as user-friendly as Wise. However,
it has been kept up to date, whereas the Wise version I have is
ancient.

>
>2) The installer never gave me a chance to install
>Desktop or QuickLaunch shortcuts. So the only
>way to get to the program was through the Start Menu,
>where many people will never find it.

My bad. I omitted to create any, apart from the one on the
Start/Programs menu.  But yes, I'll make sure that an additional
shortcut is created at least for the Desktop. Unfortunately, Wise
doesn't appear to provide any option for the installer (person) to
choose whether to create a shortcut or not.

>3) Your custom buttons have a white line through
>them on my display. (A recent vintage Dell LCD
>monitor with VIA/S3G display adapter.)

That is by design! The white line is supposed to indicate "disabled".
However, I'm having to revist the entire display after what Ulrich
Korndoerfer reported in the thread "Contemplating the Migration",
namely that he has his monitor set to 120 dpi. He privately published
a screenshot for my benefit and, yes, KTN looks entirely crap if the
default setting isn't adhered to.

I'm actually looking at the buttons right now (the code/design
environment, I mean), having spent most of the day using a better
tiling method to improve the visual appearance of the screens at
different dpi settings. The buttons are bog-standard VB6, but set to
graphical. With a different dpi, e.g. 120 instead of 96, the buttons
themselves are resized (by Windows) appropriately, but, of course, the
graphic in the button doesn't change and there's no way I can see to
stretch it. So I'm going to have to ponder that one a bit. (For
instance, in that other program (TuneFinder) I didn't use command
buttons for the buttons, but picture boxes.)

>
>4) The rounded corners of the forms look nice but
>I see the tabs in the corners. Where they should
>be transparent they're medium-dark gray.

The skinning is being done with the NeoCaption component from the
vbAccelerator site, so I don't think much can be done in this area.
Even if you look at the author's own examples here
http://www.vbaccelerator.com/home/VB/Code/Controls/Skins/article.asp
you can just see the "tabs" in the two top corners, especially in the
second, blue example.

I once got very excited about ActiveSkin, a skinning OCX dating back
at least six years. However, it suddenly just disappeared without
trace, which was strange after the author(s) must have spent literally
hundreds of hours developing it. The website hasn't been updated since
2003. This was not free, but I would have been willing to register it
and pay 'em some money.

The only other skinning system I'm aware of is WindowBlinds.

Once again, thanks for your help.

MM
Author
31 May 2009 7:02 PM
mayayana
>
> It's only recently that I investigated the Wise installer's uninstall
> system and have to say that it's a little bit wanting.

  All it actually requires is a key and 2 values in the
Uninstall key.
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

  The key name can be anything. The values are
DisplayName, which shows in Add/Remove,
and UninstallString, which is the command line
for uninstall. You just need to get those values
written, and get the key removed at uninstall.

Show quoteHide quote
>
> That is by design! The white line is supposed to indicate "disabled".
> However, I'm having to revist the entire display after what Ulrich
> Korndoerfer reported in the thread "Contemplating the Migration",
> namely that he has his monitor set to 120 dpi. He privately published
> a screenshot for my benefit and, yes, KTN looks entirely crap if the
> default setting isn't adhered to.
>
> I'm actually looking at the buttons right now (the code/design
> environment, I mean), having spent most of the day using a better
> tiling method to improve the visual appearance of the screens at
> different dpi settings. The buttons are bog-standard VB6, but set to
> graphical. With a different dpi, e.g. 120 instead of 96, the buttons
> themselves are resized (by Windows) appropriately, but, of course, the
> graphic in the button doesn't change and there's no way I can see to
> stretch it. So I'm going to have to ponder that one a bit. (For
> instance, in that other program (TuneFinder) I didn't use command
> buttons for the buttons, but picture boxes.)
>
   There are a number of custom button options around,
mainly at PlanetSourceCode, I think. I ended up looking
into that awhile back and came up with something
relatively lightweight. I use an Image on a UserControl.
Then I have 2 shapes, with different DrawMode and
FillColor settings. With a little experimentation I was
able to come up with a method where, by making one or
the other of the shapes visible, I can make the button
disabled or make it "glow" when the mouse hovers. And
it only takes 1 hWnd. Each button is the size of the
image used as background. The only downside is that
it's not well-suited to multiple languages if the image
is text. For that there would have to be multiple images.
But I've never done anything multi-language myself.
Author
1 Jun 2009 1:54 PM
MM
Show quote Hide quote
On Sun, 31 May 2009 15:02:13 -0400, "mayayana" <mayaXXy***@rcXXn.com>
wrote:

>
>>
>> It's only recently that I investigated the Wise installer's uninstall
>> system and have to say that it's a little bit wanting.
>
>  All it actually requires is a key and 2 values in the
>Uninstall key.
>HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
>
>  The key name can be anything. The values are
>DisplayName, which shows in Add/Remove,
>and UninstallString, which is the command line
>for uninstall. You just need to get those values
>written, and get the key removed at uninstall.
>
>>
>> That is by design! The white line is supposed to indicate "disabled".
>> However, I'm having to revist the entire display after what Ulrich
>> Korndoerfer reported in the thread "Contemplating the Migration",
>> namely that he has his monitor set to 120 dpi. He privately published
>> a screenshot for my benefit and, yes, KTN looks entirely crap if the
>> default setting isn't adhered to.
>>
>> I'm actually looking at the buttons right now (the code/design
>> environment, I mean), having spent most of the day using a better
>> tiling method to improve the visual appearance of the screens at
>> different dpi settings. The buttons are bog-standard VB6, but set to
>> graphical. With a different dpi, e.g. 120 instead of 96, the buttons
>> themselves are resized (by Windows) appropriately, but, of course, the
>> graphic in the button doesn't change and there's no way I can see to
>> stretch it. So I'm going to have to ponder that one a bit. (For
>> instance, in that other program (TuneFinder) I didn't use command
>> buttons for the buttons, but picture boxes.)
>>
>   There are a number of custom button options around,
>mainly at PlanetSourceCode, I think. I ended up looking
>into that awhile back and came up with something
>relatively lightweight. I use an Image on a UserControl.
>Then I have 2 shapes, with different DrawMode and
>FillColor settings. With a little experimentation I was
>able to come up with a method where, by making one or
>the other of the shapes visible, I can make the button
>disabled or make it "glow" when the mouse hovers. And
>it only takes 1 hWnd. Each button is the size of the
>image used as background. The only downside is that
>it's not well-suited to multiple languages if the image
>is text. For that there would have to be multiple images.
>But I've never done anything multi-language myself.

I've gone back to using picture boxes and graphics obtained from
http://www.glassybuttons.com/glassy.php as I used in TuneFinder.

In form's declarations section:
Dim picFindTune_Left As Integer
Dim picFindTune_Top As Integer

In Form_Load:

' Capture coords of picture "button"
picFindTune_Left = picFindTune.Left
picFindTune_Top = picFindTune.Top

' Copy default picture into "button"
picFindTune.Picture = images(0).Picture

Plus:
Private Sub picFindTune_MouseDown(......)
    picFindTune.Move picFindTune_Left + 1, picFindTune_Top + 1
End Sub

Private Sub picFindTune_MouseMove(......)
    picFindTune.Picture = images(1).Picture
End Sub

Private Sub picFindTune_MouseUp(......)
    picFindTune.Move picFindTune_Left, picFindTune_Top
End Sub

Private Sub Form_MouseMove(......)
    picFindTune.Picture = images(0).Picture
End Sub

MM
Author
1 Jun 2009 11:23 PM
mayayana
>
> I've gone back to using picture boxes and graphics obtained from
> http://www.glassybuttons.com/glassy.php as I used in TuneFinder.
>

  That's an interesting page. I didn't know
there were such things online.

  It's also possible to get a MouseLeave event
in Win98+ using the function TrackMouseEvent.
It requires subclassing the button, though.


Show quoteHide quote
> In form's declarations section:
> Dim picFindTune_Left As Integer
> Dim picFindTune_Top As Integer
>
> In Form_Load:
>
> ' Capture coords of picture "button"
> picFindTune_Left = picFindTune.Left
> picFindTune_Top = picFindTune.Top
>
> ' Copy default picture into "button"
> picFindTune.Picture = images(0).Picture
>
> Plus:
> Private Sub picFindTune_MouseDown(......)
>     picFindTune.Move picFindTune_Left + 1, picFindTune_Top + 1
> End Sub
>
> Private Sub picFindTune_MouseMove(......)
>     picFindTune.Picture = images(1).Picture
> End Sub
>
> Private Sub picFindTune_MouseUp(......)
>     picFindTune.Move picFindTune_Left, picFindTune_Top
> End Sub
>
> Private Sub Form_MouseMove(......)
>     picFindTune.Picture = images(0).Picture
> End Sub
>
> MM
Author
2 Jun 2009 6:41 AM
MM
Show quote Hide quote
On Mon, 1 Jun 2009 19:23:39 -0400, "mayayana" <mayaXXy***@rcXXn.com>
wrote:

>>
>> I've gone back to using picture boxes and graphics obtained from
>> http://www.glassybuttons.com/glassy.php as I used in TuneFinder.
>>
>
>  That's an interesting page. I didn't know
>there were such things online.
>
>  It's also possible to get a MouseLeave event
>in Win98+ using the function TrackMouseEvent.
>It requires subclassing the button, though.

Ah, a MouseLeave or MouseExit event would be *much* better than the
way I'm doing it at present (Form_MouseMove). I did look at Jeff
Pearson's ButtonEx
(http://www.planet-source-code.com/upload_PSC/ftp/ButtonEx%20v22424782001.zip)
but a rounded button (like mine) shows tiny triangular corners and I
couldn't find any combination of the properties to fix it.

MM
Author
2 Jun 2009 12:47 PM
mayayana
I think this is all of the relevant MouseLeave code.
It's coming out of a UserControl. I use an Image
control on a UC. (The Image has no handle, as opposed
to the PictureBox.) I guess you could change
the code to call TrackMouseEvent on the PictureBox
hWnd. But the UserControl makes it easier for each
button to have self-contained functionality.

'---------------------------------------------------------------
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const TME_LEAVE     As Long = &H2
Private Const WM_MOUSELEAVE As Long = &H2A3

Private Type TRACKMOUSEEVENTTYPE
        cbSize      As Long
        dwFlags     As Long
        hwndTrack   As Long
        dwHoverTime As Long
End Type

Private Declare Function TrackMouseEvent Lib "user32" (ByRef lpEventTrack As
TRACKMOUSEEVENTTYPE) As Long ' Win98 or later

Private BooMouse As Boolean

'-- set BooMouse = True when first entering control area and
'-- call TrackMouseLeave
Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
    On Error Resume Next
  If BooMouse = True Then Exit Sub
      BooMouse = True
      TrackMouseLeave
End Sub

'-- Calls TrackMouseEvent with TME_LEAVE flag and UserControl hWnd.
Private Sub TrackMouseLeave()
    Dim TMEvT As TRACKMOUSEEVENTTYPE
    Dim LRet As Long
       On Error Resume Next
    With TMEvT
        .cbSize = Len(TMEvT)
        .dwFlags = TME_LEAVE
        .hwndTrack = hUC
    End With

        LRet = TrackMouseEvent(TMEvT)
End Sub

'--  Calling TrackMouseEvent results in a message coming
' thruogh the WindowProc, but each call is only good for
' one time, so the function needs to be called on each
' mouse-enter.
' In WindowProc:

  Select Case uMsg
      Case WM_MOUSELEAVE
        If (BooMouse = True) Then
          '--do mouseleave actions
          BooMouse = False
        End If
    End Select

'--------------------------------------------------------

This "dcButton" might be worth a look:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=65941&ln
gWId=1

   I'm finding that only the light version project
doesn't crash. I seem to remember the whole
package working fine before, but I may be forgetting
some requirement it had.
   This project is gigantic. Even the "light"
buttons are 120KB+ UserControls, while my own
custom button that uses images is 5 KB (not including
the image or the subclassing class). But dcButton
might be good for ideas.

   I've never dealt with rounded button issues.
I would have thought that using a GIF in an Image
or Picturbox on a transparent UserControl would
work OK, but I haven't tried it. (And of course using
a GIF has limitations.)