-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
yereverluvinuncleber
In truth though, I don't see many current MS -inspired apps using such gradients and fancy graphics. I just see square unadorned boxes with a blue background or a white background, devoid of features with big bold text.
I am sure we can bang something out that matches the graphical quality without all the underlying hoohah. A simple converter might be the way to go which you can add functionality as it is required. Olaf has created such a one-way converter to convert traditional VB6 forms and some of its controls to RC/forms and widgets.
I wanted to comment on this a bit. I've used XAML to do some things that are reasonably cool, for me. I suck at graphics in general, so bland, gray, boxes mean that what I write doesn't look like an explosion in a pizza factory, but I did get into XAML for one large-ish program and it turned out pretty well. To be fair, the bulk of the graphics in that program are not mine, since the background is an aerial imagery map control, but I made all the other parts, and some don't even look like they were drawn by a spastic grade-school kid.
Based on that, though, I would say a couple things: Most programs won't use fancy stuff because it's easier not to. That's a deeper statement than it might appear. For one thing, WinForms controls are straight up simpler than XAML. The second part is that coming up with a graphical solution takes more thought than putting rectangles on a screen. Those two points will ensure that simpler interfaces will be more common in general.
For the first part: All controls are somewhat fake. Ultimately, everything is just pixels on a screen. Whether a button looks 3D, or this form appears to be on top of that form, or the background moves while the foreground remains stationary, it's still all just pixels on a screen. The designer is facilitating how those pixels are drawn. The concept of a window, the concept of a button, those are just ways to simplify drawing pixels. I have one program where everything is interactive, and looks like a bunch of controls, but it's really just bitmaps drawn to the screen without any "controls" at all. The mouse click on an icon is really just noting that the mouse clicked on a specific part of the bitmap and doing something different as a result. I had started with controls on controls, it was just too slow, so I went to drawing pixels on a screen and noting which pixels mouse clicks happened on. All controls are like that at some level, they are just packaged up in a way that makes them easier to build with.
Putting rectangles on the screen is always going to be easier than putting abstract shapes on the screen. A rectangle is easy to describe with an Top, Left, Width, and Height, while tilted rectangles require at least a rotation angle, and abstract shapes have no defined set of attributes. The point is: the more aspects of a control that you can manipulate, the more complicated the designer has to be. For that reason, WinForms will always be easier than XAML. They are both just drawing pixels to the screen, though, and you can do everything you want without XAML. The point of XAML is to make it easier to do more. You could do the same 'more' with WinForms, just not as easily.
That's a tradeoff that is impossible to optimize. The more functionality you add to your designer, the more complicated the designer becomes, the more you have to learn, and the more difficult it is to use. All these tools and technologies are just different points along the continuum from simple blocks on the screen up to, "draw every pixel yourself." You use the simple designer when you want a simple solution, you use a more complex designer when a more complicated solution would be better. In that context, yes you CAN use the simple designer to create complex interfaces, but SHOULD you? That's up to the individual.
For the program where I went to drawing everything on the fly using MonoGame, XAML might have worked (it came down to speed of drawing, and XAML uses the GPU, so it might have been quick enough)...but it may have also constrained me. It sure would have been easier, had it worked, as a complicated designer is still simpler than composing every image 'by hand'. The program had some serious complicating features, though, and I don't know whether XAML would have helped or gotten in the way.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Right, well, that is what I have been doing all along when it comes to advanced graphical results, using GDI+ in my dock it is just images drawn on a transparent form. My code knows the x & y boundaries of the images (stored in an array) and it notes the mouse click position and compares, the icon in question does something, animates, opens a program &c.
https://www.vbforums.com/images/ieimages/2025/01/4.jpeg
With regard to making your own controls, well that is how Olaf's simple PSD parser does it. It takes each layer of the PSD (any shape at all) and dynamically creates a RC widget from it, complete with all the basic events you might need and of course you can add your own. Then you choose what happens in your logic. This was the same approach I used when I coded in .js using Konfabulator. We used a .js script that would extract the layers and modify the XML descriptor file to describe each layer separately, you then captured the events on a layer by layer basis as you would do on a VB6 control - and added logic. It is very flexible and allows you to make the design you want. No restrictions and not too difficult.
https://www.vbforums.com/images/ieimages/2025/01/10.png
My clock /calendar as described in the PSD file. I drop that file in my RES folder and when the program is run the simple parser pops the clock on the screen. I just handle the events.
I don't like what Niya said, in that the XAML code he wrote was done without a designer. For me, that's just not good enough. If you don't have a designer then you end up with simple designs. That I suppose is the current paradigm. I call my graphics 'advanced' in that they are complex and multifaceted. I look upon the typical MS-inspired apps/interfaces as 'basic' and 'simple', to me they are easy and as they have been done like that for years, thus are 'old fashioned'.
P.S. You also, do not need expensive old photoshop to make the design and the layers. You can use good ol' Gimp. It handles layers in the same manner and outputs a PSD when told to do so. Even easier.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
yereverluvinuncleber
Right, well, that is what I have been doing all along when it comes to advanced graphical results
I'm sure you are, but you have artistic talent, whereas my drawing skills maxed out before my age could be measured in years. Fortunately, icons require only that level of talent, there are plenty of free images out there, and I have friends. Between those three...things are passable.
Also, to be clear, I didn't draw my own controls because WinForm controls were limiting. I drew my own because I needed to squeeze every cycle out of the CPU, and when that wasn't enough, I needed to shift all the drawing to the GPU. It was a need for speed, not art.
I had learned to avoid art. I spent a couple years working on what could have been a cool idea (for a fish guy). I eventually abandoned the project because I became utterly aware that it was beyond me. The logic was not, as that was just a creative AI (especially for the 90s) with some innovative means of learning. What was beyond me was representing the data in a way that was even vaguely acceptable. What was required was a 3D representation. I read dozens of books on the subject (it was the 90s, the internet wasn't what it is today). They would say, "to rotate the object, apply this transform." The math and the code were clear, what nobody could tell me was whether or not I wanted to rotate the object. I couldn't picture how it SHOULD work, so I had no idea whether rotating the object was the right thing to do or not.
That situation may have improved with newer game engines. If I can say that the object is at X,Y,Z, while I am at X1, Y1, Z1 and looking in this direction, I could probably get by....but in the meantime, AI has moved on, and so have I.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
-Franky-
It could also be that the ZIPs are buried in other threads. Whatever. This ZIP only uses the XAML interfaces. As you can see, there are a lot of classes and only a few controls (without events) are finished so far. I'm not working on this project any more because it's just too extensive for me alone.
Where can I find the XAML interfaces? I open and run your project on my Win10 computer and the frmMain doesn't show anything.
-
1 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
@-Franky-, @VanGoghGaming,
Could you use XAML to make the following GUI? I'd like to compare the amount of work and complexity of XAML to the traditional VB6.
If implementing the following UI with XAML requires more than 1000 lines of code, the benefits of XAML are outweighed by bloat and complexity.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
SearchingDataOnly
Where can I find the XAML interfaces? I open and run your project on my Win10 computer and the frmMain doesn't show anything.
The project consists of several classes and each class contains the XAML interfaces (not complete and there are no events yet). For XAML Islands to work, a manifest must be present. See here: https://learn.microsoft.com/en-us/wi...cation-project For this to work directly in the IDE, a manifest must also be present for the VB6.EXE. If the project compiles (I don't think this works because some of the class names are too long), the manifest is present in the RES.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
SearchingDataOnly
@-Franky-, @VanGoghGaming,
Could you use XAML to make the following GUI? I'd like to compare the amount of work and complexity of XAML to the traditional VB6.
If implementing the following UI with XAML requires more than 1000 lines of code, the benefits of XAML are outweighed by bloat and complexity.
First, you need to understand that it was just a question of whether XAML can be used in VB6 at all. Second, XAML controls can be created in three different scenarios. Using the corresponding XAML interfaces of the XAML controls, using the XAML direct interfaces or using a XAML string. Third, you cannot compare standard controls with XAML controls. Just look at the XAML Button class and see how many properties and events it has. Fourth, XAML is just one way of designing a UI. Just like with RC6. Everyone can decide for themselves whether to use it.
To answer your question, I have little experience with XAML myself. You would have to ask someone who has been programming in UWP or WPF for years. They will put together the right XAML string for you. At the end, you still have to take care of the events you need.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
-
1 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
Just for comparison. This is what a XAML UI would look like. The XAML string looks like this:
Code:
<Page xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' xmlns:d='http://schemas.microsoft.com/expression/blend/2008' xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006' mc:Ignorable='d'>
<Grid Background='#FFF3F3F3'><Grid.RowDefinitions><RowDefinition Height='37'/><RowDefinition Height='20'/><RowDefinition Height='2*'/><RowDefinition Height='30'/><RowDefinition Height='*'/><RowDefinition Height='*'/><RowDefinition Height='*'/><RowDefinition Height='*'/><RowDefinition Height='*'/><RowDefinition Height='*'/></Grid.RowDefinitions>
<Grid.ColumnDefinitions><ColumnDefinition Width='*'/><ColumnDefinition Width='*'/><ColumnDefinition Width='*'/><ColumnDefinition Width='*'/></Grid.ColumnDefinitions>
<Button Grid.Row='0' Grid.ColumnSpan='4' x:Name='Button0' Content='=' FontSize='18' HorizontalAlignment='Left' Width='35' Height='35' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='0,0,0,0' Background='#FFF3F3F3'/>
<TextBlock Grid.Row='0' Grid.ColumnSpan='4' x:Name='TextBlock0' Text='Standard' FontSize='18' Margin='40,6,1,1' FontWeight='600'/>
<TextBlock Grid.Row='1' Grid.ColumnSpan='4' x:Name='TextBlock1' Text='0 =' HorizontalAlignment='Right' Margin='8,1,8,1' Foreground='#FF616161'/>
<Viewbox Stretch='Uniform' Grid.Row='2' Grid.ColumnSpan='4' HorizontalAlignment='Right'>
<TextBlock x:Name='TextBlock2' Text='0' FontSize='50' FontWeight='600' TextAlignment='Right' Margin='8,1,8,1'/>
</Viewbox>
<Button Grid.Row='3' Grid.ColumnSpan='4' x:Name='Button1' Content='MC' FontSize='12' HorizontalAlignment='Left' Width='80' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='0,0,0,0' Background='#FFF3F3F3'/>
<Button Grid.Row='3' Grid.ColumnSpan='4' x:Name='Button2' Content='MR' FontSize='12' HorizontalAlignment='Left' Width='80' Margin='82,1,1,1' CornerRadius='2,2,2,2' BorderThickness='0,0,0,0' Background='#FFF3F3F3'/>
<Button Grid.Row='3' Grid.ColumnSpan='4' x:Name='Button3' Content='M+' FontSize='12' HorizontalAlignment='Left' Width='80' Margin='163,1,1,1' CornerRadius='2,2,2,2' BorderThickness='0,0,0,0' Background='#FFF3F3F3'/>
<Button Grid.Row='3' Grid.ColumnSpan='4' x:Name='Button4' Content='M-' FontSize='12' HorizontalAlignment='Left' Width='80' Margin='244,1,1,1' CornerRadius='2,2,2,2' BorderThickness='0,0,0,0' Background='#FFF3F3F3'/>
<Button Grid.Row='3' Grid.ColumnSpan='4' x:Name='Button5' Content='MS' FontSize='12' HorizontalAlignment='Left' Width='80' Margin='325,1,1,1' CornerRadius='2,2,2,2' BorderThickness='0,0,0,0' Background='#FFF3F3F3'/>
<Button Grid.Row='4' Grid.Column='0' x:Name='Button6' Content='%' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='5' Grid.Column='0' x:Name='Button7' Content='¹/x' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='6' Grid.Column='0' x:Name='Button8' Content='7' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='7' Grid.Column='0' x:Name='Button9' Content='4' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='8' Grid.Column='0' x:Name='Button10' Content='1' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='9' Grid.Column='0' x:Name='Button11' Content='+/-' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='4' Grid.Column='1' x:Name='Button12' Content='CE' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='5' Grid.Column='1' x:Name='Button13' Content='x²' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='6' Grid.Column='1' x:Name='Button14' Content='8' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='7' Grid.Column='1' x:Name='Button15' Content='5' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='8' Grid.Column='1' x:Name='Button16' Content='2' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='9' Grid.Column='1' x:Name='Button17' Content='0' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='4' Grid.Column='2' x:Name='Button18' Content='C' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='5' Grid.Column='2' x:Name='Button19' Content='?' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='6' Grid.Column='2' x:Name='Button20' Content='9' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='7' Grid.Column='2' x:Name='Button21' Content='6' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='8' Grid.Column='2' x:Name='Button22' Content='3' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='9' Grid.Column='2' x:Name='Button23' Content=',' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='4' Grid.Column='3' x:Name='Button24' Content='?' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='5' Grid.Column='3' x:Name='Button25' Content='÷' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='6' Grid.Column='3' x:Name='Button26' Content='*' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='7' Grid.Column='3' x:Name='Button27' Content='-' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='8' Grid.Column='3' x:Name='Button28' Content='+' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='9' Grid.Column='3' x:Name='Button29' Content='=' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FF004275' Background='#FF004275' Foreground='#FFFFFFFF'/>
</Grid>
</Page>
The nice thing about this is that you don't have to worry about resizing the controls and font size where the result is displayed. They adjust automatically. The question marks in the XAML string ('?') are later replaced by Unicode characters in the actual VB6 code. In the VB6 code the event handling also takes place when you click a button.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
By comparison, here is one of my calculators, not working on it at the moment, this particular version was a resistor value calculator.
https://www.vbforums.com/images/ieimages/2025/01/11.png
N n n n n nineteen controls.
-
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
jpbro
It has a certain similarity....the problem is that it must have a lot of manual work to make the theme
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
I am afraid to tell you that my actual desktop is a lot less steampunk than that though it has a certain charm. My desktop is an Apple G5 that I stripped out all the old gubbins (2 cores at 2.5ghz) and replaced with a decent modern PSU, motherboard GPU and a 4.5ghz i7 CPU and several SSDs. It looks like a Apple G5 but runs a lot quicker. Not steampunk though.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
-Franky-
Just for comparison. This is what a XAML UI would look like. The XAML string looks like this:
Code:
<Page xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' xmlns:d='http://schemas.microsoft.com/expression/blend/2008' xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006' mc:Ignorable='d'>
<Grid Background='#FFF3F3F3'><Grid.RowDefinitions><RowDefinition Height='37'/><RowDefinition Height='20'/><RowDefinition Height='2*'/><RowDefinition Height='30'/><RowDefinition Height='*'/><RowDefinition Height='*'/><RowDefinition Height='*'/><RowDefinition Height='*'/><RowDefinition Height='*'/><RowDefinition Height='*'/></Grid.RowDefinitions>
<Grid.ColumnDefinitions><ColumnDefinition Width='*'/><ColumnDefinition Width='*'/><ColumnDefinition Width='*'/><ColumnDefinition Width='*'/></Grid.ColumnDefinitions>
<Button Grid.Row='0' Grid.ColumnSpan='4' x:Name='Button0' Content='=' FontSize='18' HorizontalAlignment='Left' Width='35' Height='35' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='0,0,0,0' Background='#FFF3F3F3'/>
<TextBlock Grid.Row='0' Grid.ColumnSpan='4' x:Name='TextBlock0' Text='Standard' FontSize='18' Margin='40,6,1,1' FontWeight='600'/>
<TextBlock Grid.Row='1' Grid.ColumnSpan='4' x:Name='TextBlock1' Text='0 =' HorizontalAlignment='Right' Margin='8,1,8,1' Foreground='#FF616161'/>
<Viewbox Stretch='Uniform' Grid.Row='2' Grid.ColumnSpan='4' HorizontalAlignment='Right'>
<TextBlock x:Name='TextBlock2' Text='0' FontSize='50' FontWeight='600' TextAlignment='Right' Margin='8,1,8,1'/>
</Viewbox>
<Button Grid.Row='3' Grid.ColumnSpan='4' x:Name='Button1' Content='MC' FontSize='12' HorizontalAlignment='Left' Width='80' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='0,0,0,0' Background='#FFF3F3F3'/>
<Button Grid.Row='3' Grid.ColumnSpan='4' x:Name='Button2' Content='MR' FontSize='12' HorizontalAlignment='Left' Width='80' Margin='82,1,1,1' CornerRadius='2,2,2,2' BorderThickness='0,0,0,0' Background='#FFF3F3F3'/>
<Button Grid.Row='3' Grid.ColumnSpan='4' x:Name='Button3' Content='M+' FontSize='12' HorizontalAlignment='Left' Width='80' Margin='163,1,1,1' CornerRadius='2,2,2,2' BorderThickness='0,0,0,0' Background='#FFF3F3F3'/>
<Button Grid.Row='3' Grid.ColumnSpan='4' x:Name='Button4' Content='M-' FontSize='12' HorizontalAlignment='Left' Width='80' Margin='244,1,1,1' CornerRadius='2,2,2,2' BorderThickness='0,0,0,0' Background='#FFF3F3F3'/>
<Button Grid.Row='3' Grid.ColumnSpan='4' x:Name='Button5' Content='MS' FontSize='12' HorizontalAlignment='Left' Width='80' Margin='325,1,1,1' CornerRadius='2,2,2,2' BorderThickness='0,0,0,0' Background='#FFF3F3F3'/>
<Button Grid.Row='4' Grid.Column='0' x:Name='Button6' Content='%' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='5' Grid.Column='0' x:Name='Button7' Content='¹/x' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='6' Grid.Column='0' x:Name='Button8' Content='7' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='7' Grid.Column='0' x:Name='Button9' Content='4' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='8' Grid.Column='0' x:Name='Button10' Content='1' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='9' Grid.Column='0' x:Name='Button11' Content='+/-' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='4' Grid.Column='1' x:Name='Button12' Content='CE' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='5' Grid.Column='1' x:Name='Button13' Content='x²' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='6' Grid.Column='1' x:Name='Button14' Content='8' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='7' Grid.Column='1' x:Name='Button15' Content='5' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='8' Grid.Column='1' x:Name='Button16' Content='2' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='9' Grid.Column='1' x:Name='Button17' Content='0' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='4' Grid.Column='2' x:Name='Button18' Content='C' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='5' Grid.Column='2' x:Name='Button19' Content='?' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='6' Grid.Column='2' x:Name='Button20' Content='9' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='7' Grid.Column='2' x:Name='Button21' Content='6' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='8' Grid.Column='2' x:Name='Button22' Content='3' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='9' Grid.Column='2' x:Name='Button23' Content=',' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFFFFFFF'/>
<Button Grid.Row='4' Grid.Column='3' x:Name='Button24' Content='?' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='5' Grid.Column='3' x:Name='Button25' Content='÷' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='6' Grid.Column='3' x:Name='Button26' Content='*' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='7' Grid.Column='3' x:Name='Button27' Content='-' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='8' Grid.Column='3' x:Name='Button28' Content='+' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FFE5E5E5' Background='#FFF9F9F9'/>
<Button Grid.Row='9' Grid.Column='3' x:Name='Button29' Content='=' FontSize='16' HorizontalAlignment='Stretch' VerticalAlignment='Stretch' Margin='1,1,1,1' CornerRadius='2,2,2,2' BorderThickness='1,1,1,1' BorderBrush='#FF004275' Background='#FF004275' Foreground='#FFFFFFFF'/>
</Grid>
</Page>
The nice thing about this is that you don't have to worry about resizing the controls and font size where the result is displayed. They adjust automatically. The question marks in the XAML string ('?') are later replaced by Unicode characters in the actual VB6 code. In the VB6 code the event handling also takes place when you click a button.
Very good example. Thank you very much, Franky.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Which VB6 projects are we working on?
Well, I did knock up a demo form proposed as a idea for a TwinBasic search replacement. The three search utils that TB currently uses should be wrapped into one, VB6er-friendly utility. That is was my proposal anyway.
I put it here: https://github.com/yereverluvinuncle...-for-TwinBasic
https://www.vbforums.com/images/ieimages/2025/01/2.gif
-
1 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
We are working in Argentum Online an MMORPG that is still alive after 25 years.
https://github.com/ao-org/
Attachment 193952
Gameplay:
https://www.youtube.com/watch?v=5lx5-JHsQtM
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Very good, we need some pictures.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Done, I also added a gameplay from youtube.
This is the link in Steam
https://steamcommunity.com/app/1956740
-
1 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
Hi! Am a long-time lurker on this thread, and am always impressed at what everyone manages to make. I wanted to start sharing some of my (many) projects in the hope that I could get feedback about things that I'm working on.
I should start by saying that I do not own, nor have I ever owned, a copy of VB6. Instead, I only have VBA and everything I've made has been for 64bit Office. Much of what I've learnt about VBA is sourced mostly from posts on this forum or others (namely, Mr Excel) in relation to VB6. So, frankly, it has not been easy. Converting code from 32bit to 64bit is not always "a walk in the park", and things that are available to VB6 are not available to VBA (eg. a timer control).
We also don't have a PictureBox control, and so one of my major personal projects has been developing a drop-in class module that tries (as much as possible) to mimic the VB6 picturebox control in terms of functionality (if not syntax).It's an ongoing process. I've been using the code samples found here (with proper credit/attribution) and on the gihub repos for the Planet Source Code dataset as demos to show how one would go about revising the code (if necessary) to make the vbaPictureBox class work, but also to stress test and improve the class before publishing it on github. More recently, I have been writing my own demos to show the capabilities of the class. The following screenshot is of a demo I recently wrote that uses the Wolfenstein tile assets in my first attemp at raycasting. You can see in the background that I have a demo map that could be edited in an excel workbook.
My hope is: (1) that I can finish it soon(!); and (2) that somebody in the VBA community will find it useful and make something interesting with it.I think that if you look at the games that people make in Excel, etc (see the Excel and VBA subreddits, for example) that it's fair to conclude that not many people today know that something like what I have done above is relatively easy to accomplish, much less possible.
If anyone is interested, I can post more screenshots/details.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Looks superb.
Don't worry about putting something on github before it is ready, very little on github is ever ready, much less complete. When you place it up there you gain a lot of benefits in source control, visitors will see the state of it by your full and frank description - and you can always guide them to a recent release rather than your current code.
Sounds like you could be a potential TwinBasic user very soon.
We are always interested and your screenshots will be appreciated.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Thank you!
I am also an admirer of all things TwinBasic, and have dabbled in it a bit. It's a gamechanger for extending the life and usefulness of VBA (insofar as MS will let us use it).
I don't know if animated GIFs will work here, but this is another demo I wrote - the physics of which is sourced from a VB6 project from one of the PSC repos.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
yereverluvinuncleber
That is SO cruel.
Nor me! I only do it for my own contrived interfaces.
You are in the clear.
So Van, what do you suggest? What 'should' we be doing to implement such lovely controls/events in VB6?
webview2,webbrower
It may take only two minutes to achieve such a function.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
xiaoyao
webview2,webbrower
It may take only two minutes to achieve such a function.
Go away please xiao, if you have nothing to offer here then you should not be posting.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
I am actually getting close to finishing it. Honestly, I can't believe it. It has taken far longer than I expected.
https://www.vbforums.com/images/ieimages/2025/01/12.png
I have a release here: https://github.com/yereverluvinuncle...0.0.1build2556
Please note: barely tested. This release is now old and an update will come soon.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
Dan_W
Dan, this is good, where is the code?
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
This thread is about projects you have worked on, not about things you'd like to see.
-
3 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
I am developing a project xiaoyao web IDE, scripting tool.
The goal is to achieve cross-platform.
Language: VB6, twinbasic, VB. Net. C , JS, Python
At present, it mainly solves the problem of vector diagram.
Transparent PNG, infinitely enlarged SVG vector map, web page management background, foreground. Vb used to do background service center. Can be run on the wine above the foreground with the direct operation of the web page
It is planned to develop a mobile version of visual form designer, which can control the management and maintenance of computers.Simple screenshot mode of remote desktop, mouse, finger click screen once screenshot once.
Attachment 194017
Attachment 194018
Attachment 194019
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
Shaggy Hiker
This thread is about projects you have worked on, not about things you'd like to see.
Thankyou Shaggy, forgive my frustration and thanks for the moderation, and for getting xiao on track.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
xiaoyao we would like to hear about your cross platform web IDE, scripting tool. Just please keep on track, don't chat about stuff unrelated and if you can, keep it brief - and always add a picture of your progress - and not too often, thanks!
-
1 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
yereverluvinuncleber
Dan, this is good, where is the code?
Sorry - I didn't see your question until just now. This is originally a PSC VB6 project that I've just managed to find again now - here is how iit began: https://github.com/Planet-Source-Cod...ysics__1-56134
Attachment 194029
The rest of it is a bit of a frankenstein that I need to rewrite.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
We always need to rewrite everything. Honestly, if most looked at my code they would be likely to scream and tear their hair out. Don't hide your code due to embarrassment. As soon as I manage to get my code working I intend to thoroughly overhaul it but I still have plenty to do to finish the functionality.
I just implemented a new method of playing sounds asynchronously that writes the wav files (previously stored in a memory buffer) and feeds that buffer to the waveOutWrite API. Means that my clock now plays the major sounds, chimes, ticks &c in an overlapping manner as they should sound, as per the old YWE version of the clock.
-
2 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
xiaoyao web ide:Development progress. api drawtext,The text label control is automatically enlarged and centered vertically.
Gets the height and width of the drawing area occupied by multiple lines of text. I used to study this problem for several years, and there were always some minor problems, but now it has finally been solved.Now a look at the web page, CSS color has 400 functions. The degree of freedom is very high, but the difficulty is also increased by hundreds of times.
Attachment 194035
Attachment 194036
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
It needs to be directly VB6-related xiao
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
My core is an IDE written with VB6. Use web pages as UI. Events can be triggered directly in a web page or in a program.
It is very difficult to find windows text boxes that are vertically centered up and down.
I am now using the windows API and the web page at the same time.
If you can do something with the windows API, use it first.
-
2 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
Still working on my game engine.
All the core stuff is in place and working very well.
So now I'm doing a lot of detail work.
I plan to eventually have all settings and multipliers available to the user but for now most of that stuff is internal and you get what I give you.
And what I'm giving you is a 40% multiplier: 1 + (0.40 * current value / max value).
Attachment 194056
Attachment 194055
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
-
1 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
Here's more.
The left window has been significantly updated to improve readability since the version I'm uploading.
I'm leaving it running to check the game-balance because I haven't made any changes to how the scoring works since compiling the one shown here.
Attachment 194058
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Too small, can't see a thing, upload it using imgur and add a link instead. Looking forward to see it.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
I've never used it but my friends at the Googles gave me an upload link. Hopefully it works.
https://imgur.com/a/EzuPROa
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
One of the things I did that I think is kind of funny, is that you can right-click anything and you'll get info about it in the left window.
If you look in the bottom right of the right-window you'll see "Net Worth".
Instead of giving you an explanation of how it works, it's just posts the formatted code in the left window.
If you can't read code then you won't get it but it's Visual Basic so mostly human-readable for anyone who cares enough to do it.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
cafeenman
Hopefully it works.
Not quite, you just need to wrap img tags before and after. [ img ] and [ /img ] - without the spaces.
https://i.imgur.com/2xIyuXu.png
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Thanks.
Now if I could just change the color of those scrollbars I'd be really super-happy.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Every time you ask how much you're worth, your value gets re-rolled.
Positive Attribute points are rolled one at a time and worth random x $1.00 each. So average to about $0.505
On the other hand, negative points are worth random x $15,000 each. So having any negative points at all is kind of bad.
Levels are worth $10k each.
And you can silo up to 111,111,000 McGuffins (that's the planned win condition)
They're worth a flat $0.24 each.
This is the code to display the code that does that:
Code:
Public Sub InquiryMcGuffinCreds()
Dim s As String
CONSOLE "Your value leaves a lot to chance.", -1, idx_PlayerMessage_Aux
Sleep 1000
s = "Public Property Get McGuffinCreds() As Double"
s = s & vbCrLf & "Const ATTRIBUTE_CREDIT_VALUE As Double = 99"
s = s & vbCrLf & "Const LEVEL_CREDIT_VALUE As Double = 10000"
s = s & vbCrLf & "Const NEGATIVE_CREDIT_VALUE As Double = 15000"
s = s & vbCrLf & "Const SILO_MCGUFFIN_MULTIPLIER As Double = 0.024"
s = s & vbCrLf & "Dim rValue As Double"
s = s & vbCrLf & "Dim n As Long"
s = s & vbCrLf & "Dim j As Long"
s = s & DBL_RETURN & "For n = 1 To m_Attributes.Count"
s = s & DBL_RETURN & " If m_Attributes(n).Value > 0 Then"
s = s & DBL_RETURN & " For j = 1 To m_Attributes(n).Value"
s = s & DBL_RETURN & " If n = idx_Player_Attribute_Developments Then"
s = s & DBL_RETURN & " rValue = rValue + (0.01 * (RollDie(ATTRIBUTE_CREDIT_VALUE + 1, ATTRIBUTE_CREDIT_VALUE + 1) - 2))"
s = s & DBL_RETURN & " Else"
s = s & DBL_RETURN & " rValue = rValue + (0.01 * (RollDie(ATTRIBUTE_CREDIT_VALUE + 1) - 1))"
s = s & DBL_RETURN & " End If"
s = s & DBL_RETURN & " Next j"
s = s & DBL_RETURN & " ElseIf m_Attributes(n).Value < 0 Then"
s = s & DBL_RETURN & " For j = -1 To m_Attributes(n).Value Step -1"
s = s & DBL_RETURN & " If n = idx_Player_Attribute_Developments Then"
s = s & DBL_RETURN & "' rValue = rValue - RollDie(NEGATIVE_CREDIT_VALUE, NEGATIVE_CREDIT_VALUE)"
s = s & DBL_RETURN & " Else"
s = s & DBL_RETURN & " rValue = rValue - RollDie(NEGATIVE_CREDIT_VALUE)"
s = s & DBL_RETURN & " End If"
s = s & DBL_RETURN & " Next j"
s = s & DBL_RETURN & " End If"
s = s & DBL_RETURN & "Next n"
s = s & DBL_RETURN & "If Level > 0 Then"
s = s & DBL_RETURN & " For n = 1 To Level"
s = s & DBL_RETURN & " rValue = rValue + RollDie(LEVEL_CREDIT_VALUE)"
s = s & DBL_RETURN & " Next n"
s = s & DBL_RETURN & "End If"
s = s & DBL_RETURN & "McGuffinCreds = rValue + (SILO_MCGUFFIN_MULTIPLIER * SiloedMcGuffins) + (0.01 * (RollDie(ATTRIBUTE_CREDIT_VALUE + 1) - 1))"
s = s & DBL_RETURN & "End Property"
PrepareInquiry s
End Sub
And the actual code which is probably redundant.
Code:
Public Property Get McGuffinCreds() As Double
Dim rValue As Double
Dim n As Long
Dim j As Long
'Public Const ATTRIBUTE_CREDIT_VALUE As Double = 99
'Public Const LEVEL_CREDIT_VALUE As Double = 10000
'Public Const NEGATIVE_CREDIT_VALUE As Double = 15000
'Public Const SILO_MCGUFFIN_MULTIPLIER As Double = 0.024
For n = 1 To m_Attributes.Count
If m_Attributes(n).Value > 0 Then
For j = 1 To m_Attributes(n).Value
If n = idx_Player_Attribute_Developments Then
rValue = rValue + (0.01 * (RollDie(ATTRIBUTE_CREDIT_VALUE + 1, ATTRIBUTE_CREDIT_VALUE + 1) - 2))
Else
rValue = rValue + (0.01 * (RollDie(ATTRIBUTE_CREDIT_VALUE + 1) - 1))
End If
Next j
ElseIf m_Attributes(n).Value < 0 Then
For j = -1 To m_Attributes(n).Value Step -1
If n = idx_Player_Attribute_Developments Then
rValue = rValue - RollDie(NEGATIVE_CREDIT_VALUE, NEGATIVE_CREDIT_VALUE)
Else
rValue = rValue - RollDie(NEGATIVE_CREDIT_VALUE)
End If
Next j
End If
Next n
If Level Then
For n = 1 To Level
rValue = rValue + RollDie(LEVEL_CREDIT_VALUE)
Next n
End If
McGuffinCreds = rValue + (SILO_MCGUFFIN_MULTIPLIER * SiloedMcGuffins) + (0.01 * (RollDie(ATTRIBUTE_CREDIT_VALUE + 1) - 1))
End Property
-
1 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
yereverluvinuncleber
There have been some discussions about the benefits of using VB6 over VB.NET and vice versa which just piqued my interest into what we are all actually doing with VB6. So I thought I'd just try to test the water on the current state of VB6 and its usage in real life.
So, if you wouldn't mind posting here, could you please let the community know what you are currently working on using VB6 in any form or manner whatsoever, especially if it is interesting and so we can view the continued potential of this language that we use.
I know what my projects are and I'd be happy to post mine but I am hoping someone else can get the ball rolling, I don't want this to be my thread alone.
To qualify, the project must have VB6 at the core but can use other components of course but it must be a recognisable VB6 project at its heart. A brief description as you like and as many pictures as you can muster. I generally host my images at
imgur.com. A link to a project or a download link is also perfectly acceptable. Shameless plugging is fine, at least on this thread.
A picture speaks a thousand words and all posts of your project must include at least a picture (of the project) and a project name. Some notes on the project status, state of completion, technical problems you have encountered, what you have learnt would all be grist to our mill. If we received lots of replies on a specific project then we may take those to another thread (I ask for understanding on the part of the moderators).
So, please humour me in this thread and show me what you are working on, big or small, fat or thin, tall or short. It might also be good to see your working environment. In a short while I will post an image of one of my mini-projects that I am intending to complete but I hope someone else will assist me in getting the ball rolling.
Not trying to replace the code bank, I just thought it might be a nice way to see just what is going now in VB6 land.
PS. We could even create one for VB.NET a little later.
THREAD RULES:
1. An image per post per application
2. A name to each application
3. A link, if such exists - optional
4. Summary description about each app.
5. Description of the environment and tools used to develop (eg Win11, Dell omnibrain 12ghz)
EveryDiscord, A FOSS Discord client for Windows XP based on VB6.
Attachment 194082
Relies on Discord Tokens(Ok may sound shady. but how are you going to pass OAuth2? You need a modern browser[Supermium is excluded] to interpret the links that Discord emails you to vertificate)
I sent my first ever message from it, currently working on a way to fetch them, ComCtl32(CC 5) ListView is closest to a text-bubble view. It's visually smilar as Discord has no drawn-bubbles on the view.
Based on wqweto's TLS 1.3 AsyncSocket. Alot of thanks to him for making this project happen.
Made in a VM(XP Professional x86 SP3), Tiny11 24H2 as host. 27" Monitor, and a desktop with 32 GBs of RAM(though doesn't matter here due to x86)
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
xiaoyao
My core is an IDE written with VB6. Use web pages as UI. Events can be triggered directly in a web page or in a program.
It is very difficult to find windows text boxes that are vertically centered up and down.
I am now using the windows API and the web page at the same time.
If you can do something with the windows API, use it first.
Idk if you would really like doing a project that isn't fully yours, but maybe you can use your "inspiring" GUI skills for VBForumCompiler's IDE.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
gaouser
EveryDiscord, A FOSS Discord client for Windows XP based on VB6.
I look forward to seeing that. Could be useful.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
yereverluvinuncleber
I look forward to seeing that. Could be useful.
The reason was that I kinda did not like how DiscordMessenger was built. It either used old versions of libraries or libraries that have like a second left to EOSing NT5, for just opening Discord web version(desktop client is just an electron app loading the web version) with Supermium, I just don't like web apps, they don't fit in with native Windows software, and they just work weirdly.
And another reason is that I really love XP and the NT5 Kernel. It is when Windows peaked stability, which it has never recovered that since Vista.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Anyone else working on anything interesting that they care to share?
-
1 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
I'm still working on the Windows App SDK and WinUI 3 project. Progress is slow though. I just don't have the time to try out more and find errors. Apart from that: XAML controls don't always have to be square.
-
2 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
Attachment 194162Attachment 194163
3d buttons,and 3d Game chess by vb6
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
-Franky-
I'm still working on the Windows App SDK and WinUI 3 project. Progress is slow though. I just don't have the time to try out more and find errors. Apart from that: XAML controls don't always have to be square.
Do they always have to be plain and flat though? Hate this "Fluent UI" crap where everything is flat with little to no borders and various other UI sins from art students too far up their own ass and managers implementing change for the sake of change to justify their pay.
Windows UI design really peaked in 7 and it's been a steep decline since, with 11 dipping into the 'actively painful to use ' realm.
Those VB buttons just look so much better than the "is that a button or a label" WinUI buttons.
It's impressive technical work but a lot to go through for a worse UI.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
fafalone
It's impressive technical work but a lot to go through for a worse UI.
My thoughts exactly.
It is good to see what people are working upon though, keep it up chaps. This thread is a great example of what can be done using VB6/TB.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
fafalone
Do they always have to be plain and flat though? Hate this "Fluent UI" crap where everything is flat with little to no borders and various other UI sins from art students too far up their own ass and managers implementing change for the sake of change to justify their pay.
Windows UI design really peaked in 7 and it's been a steep decline since, with 11 dipping into the 'actively painful to use ' realm.
Those VB buttons just look so much better than the "is that a button or a label" WinUI buttons.
It's impressive technical work but a lot to go through for a worse UI.
But then you can't switch to Win11. I mean, you can stay with Win7 if you like the UI better. And who says that a XAML button has to be flat? That's just the default template. You don't know, or you don't even have a clue, about the possibilities that can be achieved with XAML. And I've already written about it here. XAML is just one of many ways to create your UI. You don't have to use it and nobody is forcing you to. :p
Edit: Just do a Google image search for "xaml button style template". I think that will give you a small overview of what is possible with XAML.
-
1 Attachment(s)
Re: Getting the ball rolling. Which VB6 projects are you working on?
Each of web UI, xmal, WPF, and winform has its own characteristics and shortcomings.
I currently prefer the web version of the IDE, the control style.
Attachment 194168
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Well, you know what I prefer...
https://www.vbforums.com/images/ieimages/2025/02/3.jpeg
Right Click and view image to see in more detail.
Let the XML discussion continue elsewhere, my apologies for contributing...
The above shows what I am working on. Dragging up an old project to avoid boredom setting in.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
-Franky-
But then you can't switch to Win11. I mean, you can stay with Win7 if you like the UI better. And who says that a XAML button has to be flat? That's just the default template. You don't know, or you don't even have a clue, about the possibilities that can be achieved with XAML. And I've already written about it here. XAML is just one of many ways to create your UI. You don't have to use it and nobody is forcing you to. :p
Edit: Just do a Google image search for "xaml button style template". I think that will give you a small overview of what is possible with XAML.
I particularly like this UI. However, what differs is the taste for something. I myself am fascinated by the color blue and my highlights are in blue tones.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Blue is a 'good' colour. I think I understand your fascination. Sexy little beast isn't it? Oooops sorry.
I am currently going through my code and "Tidying it up". Fixing all the things I was too lazy to do during the coding. You only realise how much effort you avoided when you have to go through your code and fix your myriad mistakes. It would be good if there were additional options such as OPTION EXPLICIT.
OPTION COMMENT
OPTION NOTLAZY
OPTION DOCUMENT
OPTION PROPERVARIABLENAMING
OPTION DONTBEATWIT
Might be useful.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Quote:
Originally Posted by
xiaoyao
Each of web UI, xmal, WPF, and winform has its own characteristics and shortcomings.
I currently prefer the web version of the IDE, the control style.
Attachment 194168
Hi xiaoyao,
Could you upload a clear version of this image in zip format? I'd like to try to generate/create this web page with my desktop UI framework. In this way, I can test and compare the development efficiency of my UI framework.
-
Re: Getting the ball rolling. Which VB6 projects are you working on?
Writing several app at the same time. That is why I am so confused all the time.
Party Cam Kiosk - takes a sequence of webcam photos, applies effects and prints out a photo strip, 2-up, 4-up and one-up pages color or B&W plus many fun options. 45K + code, more of comments. about 99% complete (runs but adding features)
DesignCAD - a user friendly CAD program that generates g-Code to operate a desktop CAD machine for cutting out and carving. 50K + lines of code + more of comments. About 80% complete. runs but adding features.
Story Teller - user programmable using bookmarks. reads text aloud selectable voices, plays music of many formats, open multiple picture windows with effects and/or movie screens. With many more options. 80K+ lines of code, more of comments. about 95% complete (runs but adding features)
Keep finding code from my snippet library that I do not recognize. Memory problems setting in.
Learning all the time.
Just keep on keeping on !