this post was submitted on 11 Feb 2024
14 points (85.0% liked)

Learn Programming

1625 readers
1 users here now

Posting Etiquette

  1. Ask the main part of your question in the title. This should be concise but informative.

  2. Provide everything up front. Don't make people fish for more details in the comments. Provide background information and examples.

  3. Be present for follow up questions. Don't ask for help and run away. Stick around to answer questions and provide more details.

  4. Ask about the problem you're trying to solve. Don't focus too much on debugging your exact solution, as you may be going down the wrong path. Include as much information as you can about what you ultimately are trying to achieve. See more on this here: https://xyproblem.info/

Icon base by Delapouite under CC BY 3.0 with modifications to add a gradient

founded 1 year ago
MODERATORS
 

I'm a seasoned programmer on Mac/Linux/iOS, and want to get into Windows application programming. Problem is, every time I try, Microsoft comes in a week later and discontinues the current framework in favor of something else. Because I need to use a C++ library, I started with C++/CX, just to be told C++/WinRT was the way to go etc.

I've lost track of what the current one is now and what has been discontinued, and can't for the life of me find recent information on the web.

Anyone here know where I can find info on what's the current one? It seems C# is still the main language, but what UI framework does one use? It used to be UWP, but now it seems WPF is back ... ?

My constraints are: I'm making Windows desktop applications, I need to be able to call into C++, and I want it to look like a modern application. I also need to create my UI from code (based on files provided by the user), not from XAML files.

top 10 comments
sorted by: hot top controversial new old
[–] dohpaz42 12 points 7 months ago* (last edited 7 months ago)

Believe it or not, this is a similar problem in web development. Every week or two there is always some new and shiny framework that is top dog and a must use. My best advice is to just pick one framework that you’re comfortable using and stick with it. Ignore the new and shiny beyond that and focus on your app. Otherwise you’ll be chasing the dragon forever.

[–] [email protected] 6 points 7 months ago (1 children)

The microsoft way is probably still WPF, yea. Though there are some articles every once in a while asking "Is WPF dead?" etc

A good alternative is Avalonia, syntax wise pretty close to WPF, but more community driven and cross-platform

[–] [email protected] 1 points 7 months ago

WPF with ... C#? C++/RT? ... is there any place I can get this info from MS so I don't always have to ask friendly strangers on Lemmy? :D

[–] [email protected] 5 points 7 months ago (1 children)

Are you sure the frameworks you've tried are actually "discontinued"? C++/CX is still supported, it's just not recommended because WinRt is standard-compliant (CX uses compiler extensions) and has some other advantages. UWP is also still supported.

[–] [email protected] 1 points 7 months ago (1 children)

Win32 is also still supported on Windows, and I cobbled together half an implementation using that (but had to do way too much work to have my app not look like Windows 95), but on all other platforms, when the platform vendor makes announcements of moving away from a technology, you don't start a new project on an old platform. So I'd rather use whatever gets attention from MS, and new features, and looks right.

[–] [email protected] 0 points 7 months ago

Win32 is the foundational Windows OS interface on which WinRT, C++/CX, MFC, etc are all built. It's not deprecated, it's just very low-level. https://en.m.wikipedia.org/wiki/Windows_API

[–] [email protected] 4 points 7 months ago* (last edited 7 months ago) (1 children)

every time I try, Microsoft comes in a week later and discontinues the current framework in favor of something else.

This is the way.

I have nothing useful to add, as I noped-out to become a full web developer, for exactly this reason.

If I desperately needed to call into C++ libraries, I would just build the whole thing in C++. And you're right, it won't look modern.

That said, it sounds like you're asking the person running your app to give you an unprecedented amount of trust in the modern age (running locally, unsandboxed, running code from unmanaged libraries, presumably outside an app store ecosystem).

If you have users, in that situation, I'm guessing you have a deeply compelling solution.

And if I were in those shoes, I would build it 100% in C++ and let my users live with it looking old school. They'll notice the appearance once or twice, then they'll notice all the more important functionality for a lot longer.

[–] [email protected] 4 points 7 months ago

This is definately the way with microsoft. Use this new shiny framework... 18 months later. No Use this one its' much better, just rewrite all your code again! 18 months later....

[–] [email protected] 2 points 7 months ago (1 children)

Maybe Slint is for you? If you so wish, it'll be possible to run it on Linux+Mac too. In the future maybe even iOS and Android (they're working on it). Supports C++, nodejs, and Rust.

CC BY-NC-SA 4.0

[–] [email protected] 1 points 7 months ago

Thanks, that looks like a cool project, but this is for a programming language with an integrated UI builder, so using another UI abstraction on top of the native UI would just lead to lots of awkward translation code on top of Slint's.