Jump to content

Desktop app - Help us get started - C++/C# .NET/other that you suggest

WAR Corporation
Go to solution Solved by DevBlox,

If you're cutting out .NET framework - no C# for you! You could use Mono, but you'll need to find another GUI library/framework to work with, so that you could vendor it with no explicit install for the user (GTK# would work). You can embed Mono into your executables, so you wouldn't need an install here either. If choosing C++: you said that you have C# knowledge, so you'd have to learn C++ along the way. It's not trivial: memory management, no generics, a whole lot o constructs that don't need to exist in C#. Some things will be familiar, like structure, namespaces etc, others will require a lot of time. If you have some C experience, that will help. You probably won't gain much in performance (UI responsiveness) with C++, these things are a bit less sensitive to that. But it will help with memory usage a lot. It for you to decide.

 

My two cents would be: stick with C# and .NET, less pain. If you really want to do stand-alone, use Mono with some GUI lib, and embed Mono. But if you insist on doing it with C++ and completely stand-alone, consider using QT.

 

EDIT: As for .NET or .NET Core, it depends completely on how adventurous you want to be, I'd personally go for .NET Core if it's in a working condition, assuming it would be a pet project of mine. Otherwise, probably would stick with normal .NET .

Hello,

 

My team and I wants to build an application similar to Excel with other functionality and we were wondering if we should use the .NET Framework or go straight to C++.

Currently, we have a strong knowledge in C# WPF (and some in WinForms), but were shocked and worried after we downloaded the C++ Desktop Development package for VS 2019, mainly because there's absolutely no designer (that we found) and we're pretty sure we would have to create our own controls and maybe framework (we're assuming). We have all the time in the world to learn a new programming language and we're mainly focused on our desktop (not console) app, no matter how hard it is to learn.

 

Considering this, we have a few things to consider:

  • We would prefer that our app would be made with/without (we're not really sure) the .NET Framework (as 1. C++ is somewhat faster than C#; 2. the user is required to have .NET installed; 3. it's easier to crack and decompile; 4. More business applications are made outside the .NET Framework ---- however, if you recommend us using it, we will (assuming there's good advantages);
  • UWP is not an option;
  • We're starting from scratch;
  • .NET Core or .NET Framework? (if you recommend c# ---- we know that .NET Core is in preview with WPF).

The questions we have include:

  • How harder would it be to create a C++ desktop application with animations and ui graphics (such as graphs) compared to C#?
  • If we go for C++, what benefits would we have over .NET C#?;
  • What do you recommend? If you recommend C++, please link us to a beginner tutorials (on designing windows/forms, comparisons between c# and c++, etc.) If you recommend something completely different (such as python or java, please let us know).

Thanks so much for taking the time to read this and helping us.

                    PSU Tier List: https://linustechtips.com/main/topic/631048-psu-tier-list-updated/

 

CPU Celeron n2830 - GPU Integrated - RAM 1x4GB DDR3 1333MHz - Storage 750 GB 5400RPM HDD

                                                Operating System Windows 10 Home

Link to comment
Share on other sites

Link to post
Share on other sites

If you're cutting out .NET framework - no C# for you! You could use Mono, but you'll need to find another GUI library/framework to work with, so that you could vendor it with no explicit install for the user (GTK# would work). You can embed Mono into your executables, so you wouldn't need an install here either. If choosing C++: you said that you have C# knowledge, so you'd have to learn C++ along the way. It's not trivial: memory management, no generics, a whole lot o constructs that don't need to exist in C#. Some things will be familiar, like structure, namespaces etc, others will require a lot of time. If you have some C experience, that will help. You probably won't gain much in performance (UI responsiveness) with C++, these things are a bit less sensitive to that. But it will help with memory usage a lot. It for you to decide.

 

My two cents would be: stick with C# and .NET, less pain. If you really want to do stand-alone, use Mono with some GUI lib, and embed Mono. But if you insist on doing it with C++ and completely stand-alone, consider using QT.

 

EDIT: As for .NET or .NET Core, it depends completely on how adventurous you want to be, I'd personally go for .NET Core if it's in a working condition, assuming it would be a pet project of mine. Otherwise, probably would stick with normal .NET .

Link to comment
Share on other sites

Link to post
Share on other sites

First if you want to make from scratch an excel clone, C# won't be as fast specially with cell recursion.

I suggest you simply add your functionality into excel directly. I have seen nearly complete excel and word overhaul done in C#.

 

That being said if you want to create from scratch and you know C# just go straight to .NetCore.WPF has some support for 3.0. Don't forget .Net 4.8 is the last windows only framework. .NET Framework is being killed next year. It will be replace by .NET 5.0 which is 100% cross platform using .NET Core which will support WPF and WinForm. Preview is already available if you want. Code will compile like you ticked the Native compile option in the project properties which will completely convert the code to a C++ native with extension modules (.NET another set of C++ modules). Won't have the same performance as C++ but with just the preview in my hands running simple sample performance loop, assignment, file handling it do get extremely close performance. On a basic loop test (loop + variable assignment and a mathematical operation) C# used to perform up to 8 times slower than C++ for the same code and on the new version ii is only 20 to 40% slower. Thats 7 times faster than it was but those are edge case scenario.

Link to comment
Share on other sites

Link to post
Share on other sites

Although my first thought is: Don't do it. Use LibreOffice instead and make any changes you need to it.

C++ doesn't come with any designer that you can use out of the box. There's the option of using Qt or GTK+ or other similar toolkit libraries for the GUI. Qt (and possibly GTK) provide designers you can use to make the UI and both are cross platform if you care about that. Also, you will definitely have to make some custom components as far as I can tell. This is a difficult and error prone task for complex stuff like excel and word.

Link to comment
Share on other sites

Link to post
Share on other sites

On 9/8/2019 at 11:49 PM, WAR Corporation said:

What do you recommend?

Delphi, arguably the best RAD IDE available.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

You should look into Qt and wxWidgets

I'd favor C++ because it would be faster and would have smaller runtimes, no hassle of making installers with a whole .net redistributable package or whatever... and you can make stuff more portable and cross platform.

 

But maybe you could make it as a plugin for LibreOffice or some extension ...

 

Maybe you could do it in another language like GoLang or why not... Delphi does have good IDE and built in controls.

Link to comment
Share on other sites

Link to post
Share on other sites

Thanks so much guys, I've looked into .NET Core and we're excited for it (even though WPF is only on preview). Last thing we want to do is write an app on a specific language and then deleting the project and rewriting it on a different one.

                    PSU Tier List: https://linustechtips.com/main/topic/631048-psu-tier-list-updated/

 

CPU Celeron n2830 - GPU Integrated - RAM 1x4GB DDR3 1333MHz - Storage 750 GB 5400RPM HDD

                                                Operating System Windows 10 Home

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×