One big plus for IUP over wxWidgets is that API of IUP is very clean & easy to use compared to the complex C++ API of wxWidgets.
wxWidgets feels heavily inspired by Microsoft's MFC framework. That always felt clunky to me, compared to GUI toolkits like Qt and GTK.
This was indeed the case. In 1995. Since then just about everything has changed, but the idea that wxWidgets is MFC-like still refuses to die... Another common related opinion is that you have to use macros when using wxWidgets, which couldn't be further from truth since ~15 years (see
https://wxwidgets.org/blog/2023/05/are-macros-required-to-us...) but, again, old impressions linger.
Re:IUP – Cross platform C GUI library
by sirwhinesalot on Thursday May 25, 2023 @10:40AM
(#36071313)
I still find examples using the macros all over the place. It is unfortunate that is still the case...
Macros aren't the only thing that make wxWidgets like MFC. Things like using new but not delete on objects. The method and event names. The use of DCs in paint events. Etc.
Well, there is only so much latitude for naming the event (or message, callback, whatever) sent when a window needs to repaint itself. Qt has `paintEvent()` too and nobody calls it MFC-like AFAIK. IME people mostly think about event table macros when they say it.
What’s people’s opinion on Eclipse’s SWT? It is probably the most commonly used API that just wraps native controls.
Thing is, each OS has its own design language and conventions. Trying to make one UI look and feel great in all of them is doomed to fail and feel awkward in all of them.
So either make a UI for each OS or go your own way and have your own design language.
That means that the advantage is being able to write against one API, and get cross-platform compatibility, which can be nice. It also means (typically) being limited in what you can do to the least common denominator, or you (=the toolkit author) end up having to re-implement features from one platform that you want to expose but that are missing on some supported target(s). Or, of course, have an API with non-portable parts in it.
In any case, it means the "look and feel" is not the core feature of the API since that is going to be "like the target platform" and that is the point.
Given the origin, I guess Lua support is important too, here.
[1]: https://www.wxwidgets.org/