Native Windows GUI: Limitations

Even though NWG wraps a very large amount of Windows functionalities, it is still a very old API. As such there are a certain kind of applications that cannot be developed with NWG (at least for now).

Win32

NWG use Win32 under the hood. Win32 is a very old API and it only supports Windows PC. Also Win32 does not support touch/pen inputs.

Fancy looking applications

NWG will probably never reach the level of customization a HTML/CSS application can provide. There's a few reason for that.

NWG controls cannot be customized. There is a theme API, but the documentation in very sparse, and it probably wont be implemented in NWG core.

NWG does not have a drawing API. Originally, NWG would have a built-in canvas control that wrapped Direct2D, but the implementation was removed from the library because it would take too much time to implement.

Transparency is not supported. NWG controls with transparency flickers ALOT. It's almost a health hazard for people with epilepsy. One way to get rid of this flaw is to outright remove transparency between controls.

NWG has limited support for resource types. NWG can load fonts and the most common images format, but it lacks the ability to play music and videos. Those features will never be in the core. They should be implemented as external libraries.

NWG do not come with plotting controls or any kind of 3D api. Those will have to be implemented after canvas.

Data efficiency

The way NWG collection controls allocate data is very inefficient. NWG both allocate space to hold the rust specific data and the visible string value of the control. This means that if your application must log hundread of thousand of items, it will have a hard time.

This can be fixed by implementing OWNDER_DATA over the controls, but this will take alot of efforts and it will be implemented as an external library.