-
1 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
yereverluvinuncleber
Not off topic at all. This thread is to showcase VB6 developer's different styles and you'll see a complete variety of designs here. Post your latest or older designs. You've seen mine and they aren't anyone's style but my own. I've seen Windows programs go from trad. forms through a Windows for Tele-Tubbies style onto the rather poor desktop experience in Win 8 and onto the increasingly bland style we have today. Oh well.
In Erwin's menus above, I realise the rule makes sense but all I see is too many ..., too many by far. That is not your fault but the fault of the style rule. I think we can safely ignore a rule at time if it leads to something that does not look 'right'.
That is of course, only my opinion.
I love your UI designs! Steampunk is so COOL!
I haven't done anything too snazzy for awhile but here is the main dialog of a control program which I wrote several years ago for the Yaesu FT-991a Amateur Radio rig. Most all of the interface is rendered at runtime using GDI+, and most of the custom controls are same. The analog meter uses a picture of an actual Yaesu meter for the background and draws the pointer in real time during operation. It is also calibrated. The blank area in the upper right normally shows the operating frequency.
Attachment 194541
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Yes, that's gorgeous! I'm sure I've seen that before. Skeumorphism has a place in GUI design. Modern designers forget that with abstract designs that have no parallel in reality.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
I have just added some functionality to my SteamyDock Settings tool allowing the user to select a desktop wallpaper background from a curated list of pre-prepared images.
https://www.vbforums.com/images/ieimages/2025/04/1.jpeg
It works rather well and for some reason is easier to use than the equivalent Windows utility. I change desktop background regularly now.
To celebrate that additional bit of functionality, I built a new background image, Daggers on Dune.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
I haven't had a whole lot of free time recently, but I've stumbled across the InkCollector object (part of the MS Tablet PC Type Library). It provides a handy way to accessing the MouseWheel event without any kind of API/Subclassing/Hooking, which is great for VBA users because normal mousewheel code has a tendency of causing Excel/Word/[Insert name of Host App here] to come crashing down if you look at it the wrong way. There are a number of other Events available - MouseMove, etc, - that you can listen for, and all it requires is a hWnd.
I don't have VB6, so have not tested it, but I'd be interested to know. it appears to work on TwinBasic, at least. The code below simply moves a label control up and down. It requires a reference be added to the MS Tablet PC Type Library 1.0:
Code:
Private WithEvents IC As MSINKAUTLib.InkCollector
'Microsoft Tablet PC Type Library, version 1.0
Private Sub Form_Load()
SetupMouseWheel
End Sub
Private Sub SetupMouseWheel()
Set IC = New MSINKAUTLib.InkCollector
With IC
.hWnd = Me.hWnd
.SetEventInterest ICEI_MouseWheel, True
.MousePointer = IMP_Arrow
.DynamicRendering = False
.DefaultDrawingAttributes.Transparency = 255
.Enabled = True
End With
End Sub
Private Sub IC_MouseWheel(ByVal Button As MSINKAUTLib.InkMouseButton, ByVal Shift As MSINKAUTLib.InkShiftKeyModifierFlags, ByVal Delta As Long, ByVal x As Long, ByVal y As Long, Cancel As Boolean)
If Delta > 0 Then
Label1.Top = Label1.Top - 20 - (2 * Shift)
Else
Label1.Top = Label1.Top + 20 + (2 * Shift)
End If
End Sub
Admittedly, it's a hacky solution, but if it works and doesn't crash Excel every 5 minutes (and is very easy to implement), I'm happy.
Github repo here.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
yereverluvinuncleber
In Erwin's menus above, I realise the rule makes sense but all I see is too many ..., too many by far. That is not your fault but the fault of the style rule. I think we can safely ignore a rule at time if it leads to something that does not look 'right'. That is of course, only my opinion.
Fully agree, but the challenge with commercial B2B applications is that you're usually held to these standards, and if you fail to do so, it's quickly seen as "unprofessional". I keep on being surprised by how many people take form over function. ("Ah, you don't have these modern toolbars, so your app must be less good." No, we try to maximize the available space on screen to optimize the efficiency of how you work.) Or simply follow "the masses" and ask if there also is version for on the mobile phone. Yeah right, when was the last time you created a PowerPoint presentation or something with even more detail on a smartphone? Office-apps users are using 24" or larger screens for a reason.
My "cockpit" is two 27" monitors with my 17" laptop screen in the middle, and with this setup I reguarly wish I had more 'real estate' so that I didn't have to minimize apps. The only downside is that at times you have no idea where your mouse cursor is... :bigyello:
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
Erwin69
("Ah, you don't have these modern toolbars, so your app must be less good."
Image matters. How you present yourself to the world is one of the most important deciding factors of success whether it's a person or a product. When I'm looking for applications to do something and I'm presented with multiple choices, I usually go for the one that looks the best. If you have a sleek sexy looking UI, it's a guarantee I will try it out. The only time I make an exception is if a certain application has good word of mouth and comes highly recommended by multiple people that have used it.
It's kind of unfortunate because there are a lot of really good programs out there that sit behind really ugly and outdated looking UIs but the truth is when we need something, we often don't have time to try out every option so we have to save time by filtering out some of them and it's aesthetics is often the metric we use first. It's just how we are as humans.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Talking about ugly and outdated UIs, here's my desktop currently, showing that I am back working on my old dock, fixing bugs, sorting out those annoying inconsistencies and realising that my earlier code needs an overhaul.
https://www.vbforums.com/images/ieimages/2025/04/3.jpeg
Nevertheless, I'm pleased to be making progress and finding that I NEED to switch from project to project to keep the neurons interested.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
Erwin69
My "cockpit" is two 27" monitors with my 17" laptop screen in the middle, and with this setup I regu[l]arly wish I had more 'real estate' so that I didn't have to minimize apps. The only downside is that at times you have no idea where your mouse cursor is... :bigyello:
A cursor finding tool or an cursor auto-centering key switch is definitely what we need... I have the same problem.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Microsoft's Power Toys has several utilities for that...
https://learn.microsoft.com/en-us/wi...ouse-utilities
And I was surprised to find they're open source now: https://github.com/microsoft/PowerToys
FindMyMouse is c++ so not too hard to port.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Thankyou for that, I have previously used some of the power tools but I hadn't come across those particular mouse related tools before. I am also surprised they are now FOSS, pleasantly so. We need more of that from MS to restore faith.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
those annoying inconsistencies and realising that my earlier code needs an overhaul.
Isn't is amazing how code and the approach to certain things change / evolve over time? Going through "old" code, and that could be just a few months, I often wonder why the heck I chose to do it that way... For example:
- If ... ElseIf ... ElseIf ... End If versus Select Case
- For i = 1 To MyObjectCollection.Count versus For Each MyObject in MyObjectCollection
- With SomeObject ... End With versus repeating SomeObject for each property that needs to be changed
And then there are the "fun things" like how to avoid firing option buttons / combobox / checkbox clicks while populating them or setting their initial value during form load. Or avoiding SetFocus during form load. Making sure that double values and non-western characters save properly in SQL Server, knowing that not everybody uses the dot as a decimal separator, or a Korean user may want to run the software on English WIndows. So many different ways to tackle those challenges, and so difficult to keep consistent in how you do that across multiple apps and with increased knowledge over time...
I've been keeping an eye on twinBasic, and after I complete the three projects I'm currently working on, will be looking at further modularizing the current VB code and recreating the apps in that environment. Will have to do a big redesign of several areas at that time as well. In addition I'll be investigating the options of multi threading to speed up some of the calculation intensive areas, and the use of the GPU for graphics.
Interesting times ahead!
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
I quite like using with and end with. You'll find me using that from time to time. I do use select case when I remember to do so, normally halfway through a series of if elses...
There is probably a hidden overhead in using For Each MyObject in MyObjectCollection, just guessing there might be.
My main reason for wanting TwinBasic is to see how I can parallelise tasks and use out of process threads to speed up operations that are currently very slow indeed in VB6's predominantly serial nature. Then 64bit just for the hell of it. Now we have 64 bit within our grasp, multi-platform is the next essential safety net for our code.
Interesting times indeed.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
And then there are the "fun things" like how to avoid firing option buttons / combobox / checkbox clicks while populating them or setting their initial value during form load
How do you do this?
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
mms_
How do you do this?
Not sure if this is the thread to answer, so Uncle Bert forgive me if it's not and let me know so I'll avoid in the future. :bigyello:
I create a Private boolean variable for the module/form and check in the control if the form is loading. Looks a bit like this:
Code:
Option Explicit
Private m_blnFormIsLoading As Boolean
Sub Form Load()
m_blnFormIsLoading = True
'Do all your things here
m_blnFormIsLoading = False
End Sub
Sub cmbMyComboBox_Click()
If m_blnFormIsLoading Then
Exit Sub
End If
'Do the stuff you want the combo normally want to do
End If
Note that if you're setting focus to a control loading has to be finished, so you'll have to move the m_blnFormIsLoading = False code to the form Activate sub.
Regards,
Erwin
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
OK thanks Erwin69
That's the way I do it too...
Just thought maybe there was another way or something I was missing.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
yereverluvinuncleber
My main reason for wanting TwinBasic is to see how I can parallelise tasks and use out of process threads to speed up operations that are currently very slow indeed in VB6's predominantly serial nature.
You're not going to find as much value in this as you might suspect. We've had this forever in .Net and there aren't that many scenarios that call for it. What you really want is an easy way to write asynchronous code, which many times does involve the use of multiple threads. You will get a tremendous amount value out of language features that accommodate asynchronous programming.
I'm not saying parallelization isn't important; it is. But I've noticed that people confuse it with asynchronous programming which does overlap but it is something separate. You can make a jerky app seem snappy with some strategic application of asynchronous code. You're going to find a whole lot more use cases for async code than you would find things that could be parallelized effectively.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
In my case you are most definitely correct. I have no idea about the differences between parallelization and asynchronous programming, and would either term to describe splitting up a process in multiple threads to speed things up.
For example: one of my applications visualizes products on shelves, and the user can do a variety of actions to move products to different locations, assign more space, reduce stock, etc. Each time this happens, there are a series of calculations about the spatial, stock and financial consequences. The app now processes product by product serially, which is not a problem when there are a few, let's say less than 100. However, when you're taking 600-1000 or even more, small delays start to become noticeable. What I envision being able to do in twinBasic at some point, is to have the calculations done for multiple products simultaneously. Keeping things snappy even if there are larger numbers involved.
Even with drawing there may be opportunities I’d think. Drawing is done in multiple layers, so they have to be done in a specific order. However, it may be an option to separate the layers in different objects, draw these simultaneously, and then at the end combine the layers into one picture.
So, these days I am programming in VB6, thinking about redesigning things for the future, and learning new things. And that for sure is done asynchronously, and not parallel. :bigyello:
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
I have some experience with typescript and promises, async awaits &c so I have some experience of asynchronous programming where the events are triggered on completion of a promise fulfilled, typically within the same process, this would really help in a few standard cases where I am currently using timers to look for events... I also have some need of parallelisation where a particular large task can be encapsulated and farmed off to a separate thread to avoid my main animation thread being held up.
The version of TB that I am rather looking forward to is the one where the mutli-process syntax is finalised and the functionality delivered, and then some equivalent of in-process promises determined, so I can play and resolve my two requirements. I believe the former might be easier to implement than the latter.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
Erwin69
In my case you are most definitely correct. I have no idea about the differences between parallelization and asynchronous programming...
Parallelization is the answer to "I have these calculations that are being done one after the other, but are independent of each other, and I want to speed it up." An example of this would be brightening pixels in an image. Brightening one pixel and nothing to do with the brightening of any other pixel, so they can be done at the same time.
Asynchronous programming is the answer to "I have an operation that takes a noticeable amount of time to complete but I want to do other things while I wait for it to finish." A very common example of this would be initialization of state when a Form loads such as reading from a database or a file. You can allow the user to start interacting with the Form while it's state is being initialized. It gives the illusion that the application is faster which translates to a better user experience.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quadruped simulation
I have been trying to develop a quadruped walking/running simulation for a few years. After several rewrites from scratch I have now come to this point.
The program simulates the amble, canter and gallop gaits of a quadruped using a physics-based system. Each limb is controlled by kinematic and dynamic constraints to achieve natural movement. Gait transitions, such as from cantering to galloping, occur smoothly and automatically based on the quadruped's speed. The scene is rendered using the RayMarching technique, which provides a stylized and detailed visual output, though not in real time. The combination of physics and RayMarching rendering creates an immersive visual experience. Though there is still room for improvement....
Developed in VB6 + HLSL Shader (DX)
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Bloody 'ell, that's impressive!
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Second that... impressive indeed!
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
Erwin69
Fully agree, but the challenge with commercial B2B applications is that you're usually held to these standards, and if you fail to do so, it's quickly seen as "unprofessional". I keep on being surprised by how many people take form over function. ("Ah, you don't have these modern toolbars, so your app must be less good." No, we try to maximize the available space on screen to optimize the efficiency of how you work.)
Well, when you consider all the software licenses the average mid-level corporation buys and nobody knows how to use any of it.
Our company, for example, always has the latest version of MS office.
Not a soul there that I know even knows how to begin a basic database.
They use spreadsheets instead of a database when any of us know that a database would be most appropriate for the application.
And when it comes to word processing, the best they can do is basically things that Wordpad can do while still using big fat letters (like comic sans) in bright colors printed on white paper.
I mean literally, 99.9% of everyone who uses Office could not have Office at all and just use the tools that come with Windows to achieve the exact same thing.
So frankly, I don't concern myself a whole lot with what users think an app should look like in general.
But then I don't have to because I don't do this professionally. E.g. you get what I give you and I'm going to do what I think is best.
And yes, I do ask people to look at stuff while I'm developing it to see if there's anything that causes an issue for them.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
Niya
Image matters. How you present yourself to the world is one of the most important deciding factors of success whether it's a person or a product. When I'm looking for applications to do something and I'm presented with multiple choices, I usually go for the one that looks the best. If you have a sleek sexy looking UI, it's a guarantee I will try it out. The only time I make an exception is if a certain application has good word of mouth and comes highly recommended by multiple people that have used it.
It's kind of unfortunate because there are a lot of really good programs out there that sit behind really ugly and outdated looking UIs but the truth is when we need something, we often don't have time to try out every option so we have to save time by filtering out some of them and it's aesthetics is often the metric we use first. It's just how we are as humans.
See I'm of the mind that if something looks "slick" then the developer is probably into bling and not so much into substance.
I want an interface that looks efficient, not shiny.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
I want an interface that looks mental.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
That’s seriously impressive — especially considering it’s done in VB6 with HLSL shaders! The use of RayMarching for rendering combined with physics-based gait simulation sounds both ambitious and visually rewarding. Transitions like canter to gallop handled automatically based on speed? That’s a neat touch of realism. Would love to see a video or demo if you ever publish one. Keep pushing the boundaries — this is a great example of what’s still possible with classic tools!
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
cafeenman
See I'm of the mind that if something looks "slick" then the developer is probably into bling and not so much into substance.
If a developer isn't willing to put effort into his UI, there is no reason for me to assume he would put effort anywhere else.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
BAO_VE_TOA_NHA
That’s seriously impressive — especially considering it’s done in VB6 with HLSL shaders! ...
+1
Olaf
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
Niya
If a developer isn't willing to put effort into his UI, there is no reason for me to assume he would put effort anywhere else.
Just a counter example where it was so crazy as to be remembered many years later... I was looking for a PE info tool... NT headers, export directory, etc. The fancier the UI was, the worse the tool was... fancy ui gimmicks made things hard to use, important stuff difficult to find or missing, bugs and errors... the best tool by far is TotalPE2 with deadass simple normal TreeView and tab controls. An 'ugly' UI, with no frills.
Then look at archive tools. 7zip is king, the ui is like win3.1.
So often it's the opposite; plenty of developers who make great tools don't have these fancy UIs because they're focused on usefulness and stability.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
If you are making a tool for oneself and you just happen to release it then that is probably true. If you are making a tool for the world to use then if they are at the very least putting effort into the UI and that gives a indication that there 'might' be something good inside, not guaranteed though.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Faf, I do like your language recognition code.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
fafalone
Just a counter example where it was so crazy as to be remembered many years later... I was looking for a PE info tool... NT headers, export directory, etc. The fancier the UI was, the worse the tool was... fancy ui gimmicks made things hard to use, important stuff difficult to find or missing, bugs and errors... the best tool by far is TotalPE2 with deadass simple normal TreeView and tab controls. An 'ugly' UI, with no frills.
Then look at archive tools. 7zip is king, the ui is like win3.1.
So often it's the opposite; plenty of developers who make great tools don't have these fancy UIs because they're focused on usefulness and stability.
Utility applications are a usual exception, I'd say. Enterprise-level software in my opinion can live or die by their UIs.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
Niya
Utility applications are a usual exception, I'd say. Enterprise-level software in my opinion can live or die by their UIs.
I'd prefer a Win32-ish styled utility software over something with Electron and other garbage. WinRAR and PowerISO are prime examples.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
gaouser
I'd prefer a Win32-ish styled utility software over something with Electron and other garbage. WinRAR and PowerISO are prime examples.
WinRAR and PowerISO have beautiful interfaces. They are examples of the kinds of sleek sexy UIs I was talking about.
This is an example of what I'd consider an extremely ugly UI:-
https://www.vbforums.com/images/ieimages/2025/05/3.png
However, this particular one gets a pass since this is just a front-end cover for a powerful CLI utility called wget and like I said, utility applications get a pass. But if this were anything other than a useful utility application and unless it came highly recommended, I'd overlook this application in a heartbeat just because of that ugly UI.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
I'd break that down into separate pages with tabs of some sort.
https://www.vbforums.com/images/ieimages/2025/05/9.jpeg
I have a very complex prefs form (right) for configuring the main app (left), everything is behind a separate tab grouping configurations options by type.
I am just about to rejig the interface on the left. The main form was built using VB6 and the various elements, buttons &c have JPG images superimposed on them via the .picture property. These don't resize easily and each element needs to have a resized image loaded after each form resize if I want to be able to scale the form to fit larger screens.
So, I am going to rebuild it using RichClient. I have an original PSD from which the form was derived and then sliced up into bits. I can re-use that PSD form design and use Olaf's simple PSD parser to recreate it as a RC6 form containing series of RC widgets that I can assign events to. Should allow me to resize it with a lot more ease and place a better quality clock on the page via an overlay.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
Niya
WinRAR and PowerISO have beautiful interfaces. They are examples of the kinds of sleek sexy UIs I was talking about.
This is an example of what I'd consider an extremely ugly UI:-
https://www.vbforums.com/images/ieimages/2025/05/3.png
However, this particular one gets a pass since this is just a front-end cover for a powerful CLI utility called
wget and like I said, utility applications get a pass. But if this were anything other than a useful utility application and unless it came highly recommended, I'd overlook this application in a heartbeat just because of that ugly UI.
Needs some tabs and dialogs, like how Pre-Vista Control Panel applets were formed like, but still. not THAT bad. better than most braindead Electron apps that even M$ doesn't like
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Pretty sure would get used to the UI in 2-3 uses.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Attachment 194779
EveryDiscord running on Windows 11 25H2, Due to the Discord ban, I can't get it to run on WinXP, GoodbyeDPI is impossible to port sadly, only way around is a proxy from Win11 but it breaks the fun of getting TLS 1.3 up on XP. Also due to the new experimental WinSock handling I've been working on, server icons and the DMs icon won't load.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
upload the image to imgur and take the link from there