The Default Scenario
In the default scenario, with just plain C++ you will most likely be editing the GUI in C++. you would drawing the boxes and the buttons in raw C++ code.
An example can be found in the link below
He explains how it would take 90 lines of code to do this simple UI. This is something we want to avoid considerinfg our scope
WinForms (Windows Forms)
We want to see if WinForms will be useful or not. WinForms seems to be heavily tied with C# but there is an option for it to work with C++. We scraped youtube for a bit and found this. In order to use you would need to have .NET installed.
There also a written tutorial here
NOW there are things that make us Weary about Winforms
- Microsoft stopped support in 2014
- Can’t make a modern looking UI easily
- To get it to work in visual studio2019 we needed to download an extension from a sole developer
- Drag and drop interface
- Removes the need to C++ the UI
- Can be seen without running/compiling the code
- Native in the Visual Studio IDE
This article recommends not learning it.
In addition, there is this warning on the top of the MSDN page for WinForms. In a way even Microsoft recommends not using it
In addition, a default UI would look like the following and it doesn’t scale on different screen sizes
MFC stands for Microsoft Foundational Component. It’s older than winform but seems to still be supported by Microsoft.
However, we talked with Bryan Maher and it seemed that making an intuitive and Modern GUI would take a lot of customization
He pointed us to the article below.
In order to make WPF usable we had to look into third party apps such as telerik which wasn’t free or even affordable
Can we use HTML and CSS?
After a bit of research, we found the following. Utralight and scitter.
We thought all our problems might be solved since we might have found a way to do a modern UI until we realized that Utralight and scitter don’t work out of the box.
We went through the get started for both of them and none of them ran. Even after googling, we couldn’t fix the problem.
The community seemed small and the StackOverflow tags for the frameworks was small
Would only work with windows 10 1803 minimum. It works with c++ and C# but the documentation is heavily lenient on the C3 side of things.
In addition Microsoft did a list of why not to use this in production here.
- No Designer Support
- C++ startup page didn’t work from the start
- A simple Hello World app/project was 633 MBs
- Not officially released until march
UNO Platform (Our Winner)
This platform allows us to use one codebase that would work on windows7 and later. However, this framework doesn’t work with C++ out of the box.
They have a wonderful gallery to explore in the link below with plenty of examples.
However, it seems to work best with C#. Ryan said that it was easier to wrap our heads around in the Zoom SDK with C# than in C++
- Could potentially be cross-platform
- Open Source
- Documentation was friendly and easy
- It just worked out of the box
How did we stumble across this? It was mentioned in an official video from Microsoft,
It was mentioned as an alternative if people needed windows 7 compatibility
Why not UWP
UWP (universal windows Program)
Now, this was removed as an option from the start since the ZOOM SDK didn’t support it. You can check the article here