-
[RESOLVED] Modernizing the VB6 IDE
Modern VB v1.7 has been released!
Here's a brief changelog:
- Included detailed instructions on the root of the release explaining all the procedures necessary to correctly setup ModernVB
- Menu icons have been updated with a few new icons and tweaks
- Project Explorer icons are now replaced by modern icons automatically (thanks to Olaf Schmidt for the concept)
- Initial support for international languages on the add-in side (requires using the optimal settings registry file)
- Patches now include English, French, Spanish and Chinese language support as well as unlimited undo/redo functionality
- Minor tweaks and fixes (Gauge bar docking to Menu should work correctly now)
If you're one of the people who haven't been able to use ModernVB because your Visual Basic is not in English, give this release a shot!
See the release thread for details!
Hello everyone!
I have this project I made for personal use a few years ago, and recently I've been considering releasing it to the public so I began to refine and expand it.
Essentially, it's a suite of modifications that attempt to modernize the Visual Basic 6 IDE to bring it more in line with modern applications and make it more functional and pleasing to the eye. Assuming there's interest in the community, I'm planning to release the package along with source codes in this forum once I've ironed out a few final kinks with the code.
So far my project is comprised of 5 different elements that work to enhance Visual Basic.
- A registry file you can merge that will add modern, full color visual studio icons to all the VB6 menus. Incidentally, Microsoft has made all the Visual Studio icons free to use at no cost without requiring a license, so there's no copyright infringement whatsoever from this. :bigyello:
- A custom add-in for the IDE I wrote which replaces the standard VB6 toolbars with replacement toolbars that use modern icons instead (this was required in order to avoid icons disappearing when items are disabled or unavailable in the regular toolbars).
- XDelta patch files for VB6.exe, VBA6.dll and VBIDE.dll that replace the native resources with high quality icons and bitmaps. Some minor adjustments to VB6.exe's assembly code were also required to force the IDE to render bitmaps in full 24bit color depth instead of 4bit by default. My patch also includes a manifest file to enable visual styles for controls within the Visual Basic IDE.
- Registry files with custom themes and fonts to enhance the look of the IDE as well as some configuration presets for an optimal coding experience.
- And finally, I'm compiling a list of all the addins I personally use or otherwise recommend that greatly extend the IDE's functionalities or interface, including links of where to legally obtain them.
That's it in a nutshell. I was mostly wondering if anyone here would have an interest in this project. Likewise, if any of you guys have attempted something similar, what kind of modifications have you made to your IDE to improve it or make it more appealing?
I've attached a couple screenshots (for now, only with the default theme) of my efforts so far, including an animated GIF that showcases the menu icons.
Let me know what you guys think of this whole idea! :)
https://i.imgur.com/XrGDwxQ.jpg
https://raw.githubusercontent.com/Vy...esign View.jpg
https://raw.githubusercontent.com/Vy... Code View.jpg
New Feature #1: Toggling Visual Basic panels
https://i.imgur.com/lY8IUd6.gif
New Feature #2: Predefined UI Layouts
https://i.imgur.com/uEYchwB.gif
Original VB6 IDE for comparison:
https://softelvdm.com/Vault/softelvd.../vb/using1.gif
https://winworldpc.com/res/img/scree...%20project.png
EDIT: Removed attachments, using direct links for full resolution.
-
Re: Modernizing the VB6 IDE
That is a lot of icons on the toolbar. To many IMO.
The modern features that I find lacking in the IDE are Tabs and the ability to collapse blocks of code.
-
Re: Modernizing the VB6 IDE
Very interesting, and that's what I always wanted. Congratulations for the initiative.
How about implementing the sidebar that expands and collapses with the mouse?
-
Re: Modernizing the VB6 IDE
I see that you have CodeSMART Addin installed. Is it the one that's adding code windows Tabs, Code Flow Explorer, and the dotted lines in code?
I have posted a link to an open source Addin that adds Tabs to code windows and how to compile it here. I didn't write it, but it's getting us closer to a modern IDE.
-
Re: Modernizing the VB6 IDE
very interesting, looks great.
Greetings
-
Re: Modernizing the VB6 IDE
I looked at your images on imgur.com. I note that you have both CodeSmart and MZTools installed. The result is many icons displayed and other modifications made to the VB IDE. TBH - I'm having a hard time distinguishing which UI changes are made by your project vs those two other utility suites. Maybe if I could see how your project changes the default VB6 IDE, it would be easier for me to distinguish your contributions???
-
Re: Modernizing the VB6 IDE
Codesmart does a lot of changes, also for the editor
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
DataMiser
That is a lot of icons on the toolbar. To many IMO.
The modern features that I find lacking in the IDE are Tabs and the ability to collapse blocks of code.
Tabs can be added through either the CodeSmart (paid) or CodeTabs (free) addins.
I do also sorely miss being able to collapse blocks of code. I feel like that's probably a feature possible to include through an add-in however.
Quote:
Originally Posted by
Episcopal
Very interesting, and that's what I always wanted. Congratulations for the initiative.
How about implementing the sidebar that expands and collapses with the mouse?
Thank you. I'm not sure I understand what you mean though. What windows are you referring to? Are you asking for a way to collapse all the docked windows? Now there's an idea...
Quote:
Originally Posted by
AAraya
I looked at your images on imgur.com. I note that you have both CodeSmart and MZTools installed. The result is many icons displayed and other modifications made to the VB IDE. TBH - I'm having a hard time distinguishing which UI changes are made by your project vs those two other utility suites. Maybe if I could see how your project changes the default VB6 IDE, it would be easier for me to distinguish your contributions???
Here you go. I've added a screenshot with no add-ins loaded but my own. It's certainly cleaner looking but you lose on a lot of functionality. I personally don't mind the overabundance of toolbar icons. Once you get used to them and all they can do for you and begin regularly using those features, you realize they're not in fact excessive and you'll start wondering how you ever lived without them.
But you can always trim down your toolbar to the absolutely essentials if you prefer a more minimalistic look. I just enjoy having all my options easily available, and it's a constant reminder of all the tools I have at my disposal, whereas hiding them would lead to doing more things manually that would have been easier to do with the extensions.
Clean VB UI with just the ModernVB Addin loaded: https://i.imgur.com/vH5us9f.jpg
P.S. The debug toolbar docked to the left of the window is an actual VB toolbar. This is necessary as the VB IDE hides all addin toolbars while the program is running, so you can't use the addin toolbars outside of design mode. The one downside to this is that unavailable icons are just shown as empty rather than greyed out. I have yet to find a better solution for this issue.
-
Re: Modernizing the VB6 IDE
Interesting project. I personally have no problems with the VB6 IDE. When I'm busy working on code, I don't notice much about the IDE beyond whatever I'm working on and therefore don't really miss any so-called modernization, eye candy, etc. but I can see where it might be appealing.....
-
1 Attachment(s)
Re: Modernizing the VB6 IDE
Quote:
Thank you. I'm not sure I understand what you mean though. What windows are you referring to? Are you asking for a way to collapse all the docked windows? Now there's an idea...
exactly .....
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
Episcopal
exactly .....
Alright, that should be possible. I'll give it a shot.
-
Re: Modernizing the VB6 IDE
I think it looks great and I applaud any addition of customisation that brings the choice of modernisation to the world of VB6. Some think that modern-looking interfaces make a tool more "up to date" and therefore more usable - I can't understand why myself. My first fix would be to make the interface even more retro.
If you look at the VB6 'modern' style icons above, they are now out of fashion and the older flatter ones that VB6 came with are much more in keeping with Windows Win10/Metro interface guidelines. The so-called improved ones above have 3D effects, shadows &c that Microsoft themselves are dispensing with (I don't agree with it, I'm just saying).
I always just hang around knowing that one day everything comes back into fashion, you just have to wait long enough. The old VB6 IDE look and feel will one day be trendy... perhaps.
I do think that what you've done could be useful if it allows others to customise the VB6 IDE in their own style.
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
yereverluvinuncleber
I think it looks great and I applaud any addition of customisation that brings the choice of modernisation to the world of VB6. Some think that modern-looking interfaces make a tool more "up to date" and therefore more usable - I can't understand why myself. My first fix would be to make the interface even more retro.
If you look at the VB6 'modern' style icons above, they are now out of fashion and the older flatter ones that VB6 came with are much more in keeping with Windows Win10/Metro interface guidelines. The so-called improved ones above have 3D effects, shadows &c that Microsoft themselves are dispensing with (I don't agree with it, I'm just saying).
I always just hang around knowing that one day everything comes back into fashion, you just have to wait long enough. The old VB6 IDE look and feel will one day be trendy... perhaps.
I do think that what you've done could be useful if it allows others to customise the VB6 IDE in their own style.
I personally can't stand the oversimplified flat UI trend we've migrated towards these days purely on account of mobile devices, which is why I went for the classic Visual Studio 2013 icons. That and both MZ Tools and CodeSmart already use that style so it remains consistent. :)
That said, the way VB6 handled its UI all those decades ago is absolutely astounding in its foresight. How many toolbars and menu controls are you aware of that have *native* replacement of icons allowing you to draw and paste brand new ones from within the software itself??
-
Re: Modernizing the VB6 IDE
VB6 is a timeless classic in software products.
-
Re: Modernizing the VB6 IDE
Quote:
I have this project I made for personal use a few years ago, and recently I've been considering releasing it to the public so I began to refine and expand it.
When are you going to do this? Certainly some will support others not.
What is missing to start getting the job done?
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
Episcopal
When are you going to do this? Certainly some will support others not.
What is missing to start getting the job done?
Well, I've been experimenting with trying to get a good dark theme for the IDE. Here are some preview screenshots, but there's some things that will have to be tweaked through the ModernVB add-in code if possible, such as some fonts rendering black always instead of whatever the system's default font color for the theme is using. Some of the icons also don't look as great since VB doesn't support transparency and they were clearly designed with light aliased borders.
https://i.imgur.com/wQoRmWx.jpg
https://i.imgur.com/l5mgEOF.jpg
I also want to try and get that functionality for hiding the panels as you suggested, notice the toolbar on the right in the screenshots above. I could probably get the add-in to toggle them easily enough, but what I'd really like to do is intercept the actual native event handler in the IDE for those buttons and have them toggle between hiding and showing the panels (they only ever show by default). That way both the menu and main toolbar buttons for those panels would also work instead of only the toolbar on the right doing it. I've yet to give that a shot though.
-
Re: Modernizing the VB6 IDE
Quote:
I also want to try and get that functionality for hiding the panels as you suggested, notice the toolbar on the right in the screenshots above. I could probably get the add-in to toggle them easily enough, but what I'd really like to do is intercept the actual native event handler in the IDE for those buttons and have them toggle between hiding and showing the panels (they only ever show by default)
Yes you can try to retrieve the handle through the classname ... I even saw this discussion here on vbforums.
Do you still intend to open the source code? If so, open a github account.
-
Re: Modernizing the VB6 IDE
sorry, the URL of "https://imgur.com/vH5us9f" can't be open
would you upload the file to forum?
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
vb56390
sorry, the URL of "https://imgur.com/vH5us9f" can't be open
would you upload the file to forum?
I just tested all the links in the thread, including that one and they all load just fine here. Regardless, I've updated the posts to use direct linking instead of attachments, that should solve the issues.
-
Re: Modernizing the VB6 IDE
I've just implemented two new, quite nifty new features for this project!
New Feature #1: Toggling Visual Basic panels
http://www.vbforums.com/images/ieimages/2020/04/1.gif
As originally requested by Episcopal.
VB has several menus and toolbar items that allow you to show UI elements such as the Project Explorer, Properties window etc... What it lacks however is an easy way to toggle these elements. The buttons by default only attempt to show these panels, and if they are already visible they simply do nothing.
My add-in successfully hijacks the event handlers for these entries and replaces the code with actual toggling functionality, in addition to displaying a pinned toolbar on the right corner which allows you to quickly toggle any panels you like. Even the original buttons work (Shortcut keys however don't trigger the replacement code. If anyone has any idea how to trap and handle these do let me know)!
Additionally, I've added some code to attempt to keep the panels the exact size they were before they are toggled. VB by default really likes messing up the size of panels when they are toggled on and off and there's more than two panels per zone.
New Feature #2:Predefined UI Layouts
http://www.vbforums.com/images/ieimages/2020/04/1.gif
This feature allows you to quickly toggle all the relevant UI elements with one button so that you can switch to the optimal view for whatever task you're going to be focusing in. Going into Code View? No point having the Properties, Form Layout and Toolbox windows there taking up space. Going back to designer mode? Have those show up immediately again. I even added support for custom panels like CodeSmart's designer and code flow panels and the Document Map add-in to be part of the automatic layouts! Check the preview to see it in action!
By far, the most challenging to implement yet most interesting part of this feature was a predefined layout for Runtime mode. As soon as you launch your program in the IDE, the Immediate, Local and Watches window will all appear and once the execution is stopped, they will return to whatever state they were in before. This necessitated figuring out a way to determine the state the IDE was in and immediately react to the changes which was quite the challenge given that the native VB Environment object bindings are quite limited and do not expose anything remotely viable for this. ;)
But alas, it's done, and all the background trickery is done silently and transparently with zero stability issues. :D
---------------
Let me know what you guys think and if you have any other ideas you'd like to see added to this project. Once I feel this project is essentially feature complete, I'll set it up on Github and release it on the forums. :)
---------------
P.S. The VB IDE has this really annoying behavior where it disables all add-in toolbars and hooked elements when the project is executed. Does anyone know of a way to get around this? Either unhooking the menu items somehow or whatever it takes. It's really quite annoying, and the only way I could think to get past this is far more of a kludge than I'm honestly comfortable with.
-
Re: Modernizing the VB6 IDE
Quote:
Let me know what you guys think and if you have any other ideas you'd like to see added to this project. Once I feel this project is essentially feature complete, I'll set it up on Github and release it on the forums
Good job ... I just don't like to contribute to people who speak badly about VB6. :(
So I left the forum where I like to access.
-
Re: Modernizing the VB6 IDE
I'm not sure I understand, what people speak badly of VB6?
-
Re: Modernizing the VB6 IDE
This is wonderful.
A few questions:
1- Can this be installed without interfering with the Microsoft VB6 already installed on the computer?
In other words can Microsoft VB6 and your modernized VB IDE co-exist on one same computer without interfering with each other?
2- Is it fully unicode-aware (all the textboxes, etc)?
How about reading and writing unicode text files?
How about files with unicode file names or folder names?
3- Does it support integers of longer than 4 bytes for example 8 byte integers?
4- Does it have a good grid?
Please note that VB6's grid is very buggy.
5- Is it 64-bit?
Thanks.
-
Re: Modernizing the VB6 IDE
@Ilia I think you have misunderstood. This is an add-in to the existing IDE. Thus it does present some new functions but basically the answer to all of your questions is -NO.
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
IliaPreston
This is wonderful.
A few questions:
1- Can this be installed without interfering with the Microsoft VB6 already installed on the computer?
In other words can Microsoft VB6 and your modernized VB IDE co-exist on one same computer without interfering with each other?
Yes.
Quote:
Originally Posted by
IliaPreston
2- Is it fully unicode-aware (all the textboxes, etc)?
How about reading and writing unicode text files?
How about files with unicode file names or folder names?
No.
Quote:
Originally Posted by
IliaPreston
3- Does it support integers of longer than 4 bytes for example 8 byte integers?
No.
Quote:
Originally Posted by
IliaPreston
4- Does it have a good grid?
Please note that VB6's grid is very buggy.
No.
Quote:
Originally Posted by
IliaPreston
5- Is it 64-bit?
No.
The Add-in only make visual changes to VB6 IDE(not your apps), like better toolbar icons. It doesn't add any other functionality. Also, the first post included pictures that includes CodeSMART Add-in, which is not free($250). It added tabs(to code windows) and other things. See post #8 with that Add-in removed. There is a free alternative if you want to add tabs, see post #4 for details.
-
Re: Modernizing the VB6 IDE
Yeah this isn't a third party IDE replacement -- I wish! It's just an add-in and a collection of tweaks to improve the existing VB6 IDE. As for your questions.
Quote:
1- Can this be installed without interfering with the Microsoft VB6 already installed on the computer?
In other words can Microsoft VB6 and your modernized VB IDE co-exist on one same computer without interfering with each other?
Yes, but there's really no reason to run the original unmodded IDE when you can run this instead. Just back up the original files before you patch them is all.
Quote:
2- Is it fully unicode-aware (all the textboxes, etc)?
How about reading and writing unicode text files?
How about files with unicode file names or folder names?
All of this can be done in regular VB6. Just use Krool's common controls for Unicode aware controls, and it's not too difficult to write the other stuff you asked for. I'm sure it's somewhere in the VB6 Codebank already.
Quote:
3- Does it support integers of longer than 4 bytes for example 8 byte integers?
Use the currency type for this and just multiply by 10k for the correct result.
Quote:
4- Does it have a good grid? Please note that VB6's grid is very buggy.
VB6's grid works fine if you use a lower amount of twips. I recommend 24. Just don't have the grid visible cause it's too dense at these values.
Above everything else this is what I wish was possible the most. The day someone with the necessary skills writes a third party 64bit VB6 compiler will be one of the happiest days in my life.
Quote:
The Add-in only make visual changes to VB6 IDE(not your apps), like better toolbar icons. It doesn't add any other functionality. Also, the first post included pictures that includes CodeSMART Add-in, which is not free($250). It added tabs(to code windows) and other things. See post #8 with that Add-in removed. There is a free alternative if you want to add tabs, see post #4 for details.
CodeTabs is indeed a pretty good alternative, that along with Rubberduck and MZ-tools 3 will get you virtually all of CodeSmart's features for free, bar very few. I'm just lucky to have a license for that since the company I used to work for licensed that and a few other tools for everyone, and once they went under I got to keep the licenses I used. :D
-
Re: Modernizing the VB6 IDE
Until today I have not been able to use this tool. When vb starts it gives an error and the library is disabled.
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
Episcopal
Until today I have not been able to use this tool. When vb starts it gives an error and the library is disabled.
Strange. It works just fine here. Are you running the latest SP6 for VB6?
-
Re: Modernizing the VB6 IDE
Hello,
Could I upload the attachment that I deleted to a github or give the details how to modify it?
-
Re: Modernizing the VB6 IDE
Quote:
It works just fine here. Are you running the latest SP6 for VB6?
yes.
-
Re: Modernizing the VB6 IDE
:p
So, when can we get this Modern VB6 IDE?
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
vb56390
:p
So, when can we get this Modern VB6 IDE?
Once this is solved I guess.
Didn't really get any help with it so far.
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
LinkFX
Once this is solved I guess.
Why not replace that old Project-Tree-Listing completely?
(in the ScreenShot, there seems to be a good candidate directly below).
Olaf
-
Re: Modernizing the VB6 IDE
Is this just external cosmetic things, or are you modifying the exe/dll files themselves?
Just ask because something I've found extremely useful, given that we're all on at least 1080p monitors, is expanded the size of the listbox in References and Components. I also rearrange the Procedure Attributes dialog to make that tiny text box for entering a procedure description bigger.
I suppose you could do it with a whole bunch of API, but it's super simple since they're stored as 'Dialog' resources in a res file to just change the x/y/cx/cy in the resource script.
https://i.imgur.com/fMDZIqG.jpg
Either way, looking forward to trying this out!
-
Re: Modernizing the VB6 IDE
I LOVE the dark theme - I've changed over to using it on many other programs (especially coding ones) as it is MUCH easier on the eyes after hours and hours of staring at the monitor!
I anxiously look forward to giving your effort a try. I'd even be willing to donate a little something in appreciation!
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
fafalone
Is this just external cosmetic things, or are you modifying the exe/dll files themselves?
Just ask because something I've found extremely useful, given that we're all on at least 1080p monitors, is expanded the size of the listbox in References and Components. I also rearrange the Procedure Attributes dialog to make that tiny text box for entering a procedure description bigger.
I suppose you could do it with a whole bunch of API, but it's super simple since they're stored as 'Dialog' resources in a res file to just change the x/y/cx/cy in the resource script.
http://www.vbforums.com/images/ieimages/2020/04/1.jpg
Either way, looking forward to trying this out!
I'm modifying the exe/dll themselves. You can read about it in the intro post. :)
I had actually already done that one modification, along with tons of other dialogs in the IDE :): https://i.imgur.com/1TDmrBi.jpg
Really though, this is basically ready for release, but I'd really like to work out that toolbar issue so it doesn't release 95% complete. >.<
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
Schmidt
Why not replace that old Project-Tree-Listing completely?
(in the ScreenShot, there seems to be a good candidate directly below).
Olaf
Yeah I sometimes use the Project Explorer from CodeSmart, but I really like the combo of having the Designer panel open along with the original Project Explorer while in Design mode, and then switching that to Flow when you open the Code Panel. So much so that I had the layout change automatically to those. :)
Besides, it's kind of unfair to expect everyone to have a paid add-in replacement available for use isn't it?
You seem to be one of the best programmers in this website, do you have any ideas for replacing those 3 toolbar buttons? It's basically all that stands before me and release now, unless I were to just leave it be and release a 95% complete version.
-
2 Attachment(s)
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
LinkFX
By far, the most challenging to implement yet most interesting part of this feature was a predefined layout for Runtime mode. As soon as you launch your program in the IDE, the Immediate, Local and Watches window will all appear and once the execution is stopped, they will return to whatever state they were in before. This necessitated figuring out a way to determine the state the IDE was in and immediately react to the changes which was quite the challenge given that the native VB Environment object bindings are quite limited and do not expose anything remotely viable for this. ;)
Have you already tried hooking VBBuildEvents? (right-click anywhere in the Object Browser to bring up the context menu and click the Show Hidden Members to reveal it)
Quote:
Originally Posted by
LinkFX
... and if you have any other ideas you'd like to see added to this project.
You might be interested in some of the features of the attached unfinished add-in (e.g., it can automatically set certain properties of a newly added Form to your preferred defaults).
-
Re: Modernizing the VB6 IDE
I experimented with VBBuildEvents but it's far too limited to be of used to me. For one the event triggers before the IDE makes its own changes to the layout, so any changes I make to say, the visibility of the immediate window or other panels will get immediately undone. Moreover it does not support detecting when you go into Break mode.
What I ended up using in the end was the EbMode function exported from vba6.dll and just polling that regularly to detect changes in the IDE state. Thanks for the input though, I'm sure it'll be useful to some people.
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
LinkFX
do you have any ideas for replacing those 3 toolbar buttons?
Can't really see the problem...
If you cannot reach the "internals" of that ToolBar (or ToolBar-like) thingy -
but "have" a hWnd for that "TargetStripe" - then the easiest way probably is:
- to create your own (drawable) Overlay-hWnd (e.g. a VB.PictureBox)
- resizing it to the same size as the "target"
- then placing this OverlayHwnd on the target via SetParent
- but setting your Overlay-hWnd into Disabled-State
The last point above will allow "all MouseClicks to go through to the ParentHwnd...
I don't have the time to fiddle with an Addin-Project-Type now (to give a concrete Demo),
but the following might be sufficient to give you an idea, what I mean...
Into a Form (Form shall contain virginal: Picture1 and ToolBar1 from the MS-CC-V6)
Code:
Option Explicit
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Sub Form_Load()
Picture1.BorderStyle = 0
Picture1.AutoRedraw = True
Picture1.Enabled = False
With Toolbar1
.Buttons.Add(1, "Btn1", "Btn1").ToolTipText = "Btn1"
.Buttons.Add(2, "Btn2", "Btn2").ToolTipText = "Btn2"
.Buttons.Add 3, "Sep1", , tbrSeparator
.Buttons.Add(4, "Btn3", "Btn3").ToolTipText = "Btn3"
Picture1.Move 0, 0, Toolbar1.Width, Toolbar1.Height
SetParent Picture1.hWnd, .hWnd
End With
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Me.Caption = Button.Key
End Sub
Private Sub Toolbar1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim Btn As Button
For Each Btn In Toolbar1.Buttons
If x > Btn.Left And x < Btn.Left + Btn.Width And Btn.Visible And Btn.Style <> tbrSeparator Then
Picture1.Cls: Picture1.Line (Btn.Left, Btn.Top)-(Btn.Left + Btn.Width, Btn.Top + Btn.Height), vbRed, B
End If
Next
End Sub
HTH
Olaf
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
Schmidt
Can't really see the problem...
If you cannot reach the "internals" of that ToolBar (or ToolBar-like) thingy -
but "have" a hWnd for that "TargetStripe" - then the easiest way probably is:
- to create your own (drawable) Overlay-hWnd (e.g. a VB.PictureBox)
- resizing it to the same size as the "target"
- then placing this OverlayHwnd on the target via SetParent
- but setting your Overlay-hWnd into Disabled-State
Now that's an interesting idea. Suppose I could render my own toolbar as an overlay and even had the code to determine where to position it and to only display while that particular window is opened... How do I then forward the clicks from my toolbar's buttons to the target toolbar's so that their respective functions execute when my replacement buttons are clicked? My limited experience with toolbar messages seemed to indicate that command bar did not respond to TB_ messages. By all means though, if you ever have the time to give this concept a shot even if in a very simple but function demo, I'd be very grateful and would definitely expand it into the full plugin.
Anyway, I'm going to set ModernVB up for release in the meantime, I should have it on Github hopefully tonight.
-
Re: Modernizing the VB6 IDE
IMO, Olaf's sample code provides an idea: Redraw the entire MSToolbar in the simplest and safest way.
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
LinkFX
How do I then forward the clicks from my toolbar's buttons to the target toolbar's so that their respective functions execute when my replacement buttons are clicked?
That's exactly what my example has shown (did you try it)?
The Overlay-hWnd (from the PictureBox) is just there for "drawing new stuff at the correct button-positions".
Whilst the original functionality is still there - and provided by "the hWnd beneath it".
So this works (with MouseActions), as if the Overlay-Window weren't there at all...
because it was disabled (has .Enabled = False) - and thus all the "Clicks fall through to the Parent".
Olaf
-
Re: Modernizing the VB6 IDE
You can slowly use the "add-in" method to add and replace a lot of functionality, and finally completely rewrite a vb7 IDE. 64-bit procedures can be used freebasic compiler, the need to do is not to use VB6 built-in functions, the need to use their own VC principle code ActiveX. Dll or OCX. Most functions are implemented using the API. Another point of function on the release of a new version of how good, is not ready to release a new cell phone? No mistakes can be made, 10% of the functions can be completed and released, slowly increase the functions, and everyone can improve together. Why is there no open source project for VB6? If we open source the VB6 enhancement kit to github and write code together, maybe VB6 will live another 30-100 years. If win10 does not support, the big deal is to install a virtual machine to run win7, in any case than Linux to use tens of hundreds of times more convenient.
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
Schmidt
That's exactly what my example has shown (did you try it)?
The Overlay-hWnd (from the PictureBox) is just there for "drawing new stuff at the correct button-positions".
Whilst the original functionality is still there - and provided by "the hWnd beneath it".
So this works (with MouseActions), as if the Overlay-Window weren't there at all...
because it was disabled (has .Enabled = False) - and thus all the "Clicks fall through to the Parent".
Olaf
I see what you mean. I didn't realize the clicks would pass through the way you showed.
This still feels like a kludge to me, I'd much rather have a permanent solution like replacing the resources directly or figuring out a way to interface with the actual command bar -- but failing that it should at least be possible to have a functional replacement in the meantime. I'll give your idea a shot, thanks a bunch.
-
Re: Modernizing the VB6 IDE
ModernVB is now live! Please refer to the release thread for more details:
http://www.vbforums.com/showthread.p...ly-for-testing!
I have decided to release a public test version so I can get feedback from everyone. I'll explore Olaf's suggestions for theming the 3 icons on the Project Explorer panel in a future release (thank you for the suggestion!), however since this is a minor issue I decided I shouldn't delay any longer.
I hope you all enjoy, this took many, many days of work to get right. It was initially a personal project for many years, however, since I've sadly ran into unexpected health complications that have led me to ultimately reevaluate my life, I decided to put this out publicly for everyone to use while I can.
Do let me know if you guys find any issues or have questions or suggestions. Thank you.
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
LinkFX
... I'll explore Olaf's suggestions for theming the 3 icons on the Project Explorer panel in a future release
I've now made a (nearly) "ready-to-use" demo out of it (see my reply in your Codebank-thread).
HTH
Olaf
-
Re: Modernizing the VB6 IDE
Hello,
Your project is very interesting, but I have no chance to test it because my MD5 do not match
I tried to patch my files but :
DeltaPatcherLite.exe = Error Checksum
Your Files
- VB6.exe (v6.0.97.82 - MD5: 5AC021164304F5C90C0820199D4C3E7E)
- VBA6.DLL (v6.0.0.9782 - MD5: CAC38827BCD9F710EAE33F949F96EF96)
- VB6IDE.dll (v6.0.92.82 - MD5: 278E2CB9140BEEB92C5397B4D8B86D3A)
My Files (French version)
- VB6.exe (v6.0.97.82 - MD5: 36B57A1001E426B04F3BB0925934EB8E)
- VBA6.DLL (v6.0.0.9782 - MD5: B50E6CA4297FD5F0369FBB3826D129AC)
- VB6IDE.dll (v6.0.92.82 - MD5: 1AD7A6261BBF70312B991348364192FC)
Can you tell me how to make the 5 *.xdelta files for my MD5, a little tutorial would be ideal with the strings of bytes to search as well as the sources to add in these new files.
thank you in advance.
Regards
-
Re: Modernizing the VB6 IDE
Sadly the patches only work for the English SP6 version. I don't have the other language binaries handy to make patches from. If you can provide the files I might be able to attempt for you.
If you are adamant on making the patches yourself, here are some instructions:
First you have to acquire the original English VB6 files. They're available for free from the VB6 SP6 pack downloadable from Microsoft. Extract the .cab files to retrieve the original VB6.EXE, VBA6.DLL and VB6IDE.DLL files. Patch those with the supplied xdelta files then open them in Resource Hacker and extract the resources. Then you can apply the extracted resources to your local files. That would transfer over most of the the changes.
The only thing you'd be missing then is the assembly patch for VB6.exe to load the new 24-bit images, otherwise it will load them in reduced 4-bit color. This step is a fair bit more complex however and requires a good knowlege of computer internals to perform. To perform this patch you must open VB6.EXE (post resource patching) into a disassembler like OllyDbg, IDA Pro or x64dbg and locate the calls to LoadImageW that load the bitmap resources 6000, 6700 and 6701, which all need to be patched. I recommend using API Monitor intercepting that specific API until you see it load the relevant resources. You can then obtain the correct offsets for the calls from API Monitor. After you have the offsets, you have to edit the VB6.exe executable with your disassembler of choice and replace the fuLoad parameter in those calls, to ensure it pushes LR_CREATEDIBSECTION onto the stack. Depending on your executable's binary code this may involve some very basic assembly control flow rerouting to fit.
-
Re: Modernizing the VB6 IDE
Thank you for giving all these details which will be very useful to me.
I will give news on the progress of my investigations, this may be useful to others.
If I don't arrive, I will reinstall the English version of the 3 patched files.
Regards
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
LinkFX
Sadly the patches only work for the English SP6 version.
Not always. In these forums there are a lot of people that use comctl6 manifests *embedded* in the VB6.exe (for no apparent reason besides fiddling w/ Resource Hacker) which will have trouble matching patch hashes as well.
cheers,
</wqw>
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
camomille
Thank you for giving all these details which will be very useful to me.
I will give news on the progress of my investigations, this may be useful to others.
If I don't arrive, I will reinstall the English version of the 3 patched files.
Regards
Incidentally, I tried patching the files supplied by extracting the .CAB from the VB6 SP6 distributable to see if there would be any issues. VBA6.DLL and VB6IDE.dll both matched checksums with my original files and patched correctly, however VB6.exe had a different checksum. I'm mystified as to why given that they all have the same file versions as my local versions and I'm running a fresh VB6 SP6 install. Regardless, I told DeltaPatcher to ignore the checksum and it patched without issues and everything appears to work correctly. Very strange still. If for some reason this introduces any problems (unlikely but in the event that it does), I may have make a new patch for the distributable version of VB6.exe
I also looked at the French VB6 SP6 from this page and two of the files didn't match MD5 with yours. I'm kind of confused why there seems to be a million versions of the VB6 binaries lying around everywhere.
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
wqweto
Not always. In these forums there are a lot of people that use comctl6 manifests *embedded* in the VB6.exe (for no apparent reason besides fiddling w/ Resource Hacker) which will have trouble matching patch hashes as well.
cheers,
</wqw>
Well then they better have backed up the original unmodified VB6.exe if they want to successfully apply the patch (or at least the delete the manifest resource). If the executable isn't heavily modified, you can just have the patcher ignore the checksum and it should be alright.
-
Re: Modernizing the VB6 IDE
best of all, this is something really excited project I've seen so far, maybe with VBForums user contribution, we can make the "REAL" VB7, is it legal actually ? or Microsoft have something to say about this ??
-
Re: Modernizing the VB6 IDE
For information :
My French version is the "Enterprise" version
New installation standard version with SP6 in English on another XP computer and I recovered the 3 files :
VB6.exe: 6EBDCE45415F8951301699599F057195
VBA6.dll: CAC38827BCD9F710EAE33F949F96EF96
VB6IDE.dll: 278E2CB9140BEEB92C5397B4D8B86D3A
The 2 DLLs which have the same MD5 as your files and have been patched but VB6.exe against the patch refuses.
I continue my investigations
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
camomille
For information :
My French version is the "Enterprise" version
New installation standard version with SP6 in English on another XP computer and I recovered the 3 files :
VB6.exe: 6EBDCE45415F8951301699599F057195
VBA6.dll: CAC38827BCD9F710EAE33F949F96EF96
VB6IDE.dll: 278E2CB9140BEEB92C5397B4D8B86D3A
The 2 DLLs which have the same MD5 as your files and have been patched but VB6.exe against the patch refuses.
I continue my investigations
Try disabling the checksum validation option in the gear icon of Delta Patcher and applying the patch to VB6.exe.
https://i.imgur.com/ogssVDx.jpg
If it launches correctly and displays the project selection dialog in full color like in the attached image, and works without crashes it means the patch succeeded even if the checksum differs, as the patched locations were the same.
http://www.vbforums.com/images/ieimages/2020/04/1.jpg
-
Re: Modernizing the VB6 IDE
My English version (Professional) under XP with patched DLL's and EXE patch without control:
Unable to launch error !!!
My French version (Business) under W7 64 DLL's and EXE patched without control:
Works almost perfect but only with the EXE, the DLL's disturb the operation (crash).
So uninstall everything and return to normal !!!
I couldn't really do a test, but I noticed in debugging mode, no possibility of seeing my local variables (no right TAB and gray menu) !!!
Despite all congratulations for this feat which gives a facelift to this IDE.
Good luck
-
Re: Modernizing the VB6 IDE
Good job and congratulations for the initiative to open the code.
Is it possible to force VB6 to save project and folder components neatly?
Example: Form to Form folder; Class to Class folder; Module to Module; Resouce for Resource, etc.
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
LinkFX
Sadly the patches only work for the English SP6 version. I don't have the other language binaries handy to make patches from. If you can provide the files I might be able to attempt for you.
Hello,
Hello, I share the Visual Basic 6 Spanish Professional file
https://www.dropbox.com/s/aaup7u2c0i...anish.zip?dl=0
-
Re: Modernizing the VB6 IDE
Quote:
Originally Posted by
camomille
My English version (Professional) under XP with patched DLL's and EXE patch without control:
Unable to launch error !!!
My French version (Business) under W7 64 DLL's and EXE patched without control:
Works almost perfect but only with the EXE, the DLL's disturb the operation (crash).
So uninstall everything and return to normal !!!
I couldn't really do a test, but I noticed in debugging mode, no possibility of seeing my local variables (no right TAB and gray menu) !!!
Despite all congratulations for this feat which gives a facelift to this IDE.
Good luck
Use the files extracted from the English VB6 SP6 download I linked earlier. They patch perfectly (disable checksum for VB6.exe, the rest don't need it).