Choose between WPF, wxWidgets, Win32 API and MFC

Imagine that you are in Windows 7 and you need to write a graphical interface for a GRAPHIC application (for example, a landscape editor, a grid viewer ..), which includes a lot of use of DirectX and OpenGL (as it is written in native C ++). If your goal is multi-platform software, then you should go for wxWidgets, but imagine that you only use a Windows application ... what would be your choice? and why?

I assume that the application will work on both XP and Vista / 7, and obviously, in the case of WPF, the user interface will be controlled, but it will call its own functions using the proxy class of the C ++ / CLI class (whether " bounce "from performance issues caused by managed and own resources?).

+6
c ++ user-interface winapi mfc
source share
10 answers

RAD Studio can also do the work.

  • Improved in 2010! VCL (Visual Component Libraries) for the rapid creation of Microsoft Windows applications now include seamless support for Windows 7 and graceful backup compatibility with Windows Vista, XP and 2000
  • Improved in 2010! Windows Vista and Windows 7 API Headers Make Full Use of the Latest Windows Features
  • New in 2010! Support for Windows 7 Direct2D API

you can also do WPF with Delphi Prism and wxWidgets with twinforms

+21
source share

If you like your C ++ skills, I recommend WTL. It is very lightweight and leads to dry machine code. The Windows version of Google Chrome was written using WTL .

+12
source share

To minimize development time and increase productivity, I would definitely go with Delphi 2010 (Rad Studio 2010). You get your own performance, direct interfaces with the Windows 7 Direct2D API, and perhaps one of the best IDE / Development environments available in Windows 7. What else do you want?

Larry Drews TheSoftwareRonin

+9
source share

In WPF, you can use DirectX Shaders to apply effects on interface objects ( here in the CodeProject article, which details development aspects), and it was expected that support for this would continue to grow, so I would choose WPF as the development platform. In addition, he focuses on creating attractive user interfaces with reasonable effort, and I think it is very important for creating a graphics-oriented application.

+7
source share

You can use Qt even for a Windows-only application, simply because the Qt C ++ API is so well done. Qt supports OpenGL and can be used in conjunction with DirectX.

+7
source share

will “bounce” from performance problems based on managed and in-house capabilities?

definitely, but since you're only writing an editor (not a game, in general), you have nothing to worry about

WPF applications created by the DirectX subsystem, as I know. therefore, if you use only DirectX, it will be a good choice.

+2
source share

I personally used http://sourceforge.net/projects/win32-framework/ to create any Windows based applications in C ++. Otherwise, I would just use VB.Net or C #, because you can easily transfer code between them and the form designer is very useful.

+2
source share
  MFC :: Just say NO for any kind of project.
 Win32 :: Well, I can not really recommend using it.
 wxWidgets :: I have used it and seen no problem, good choice.
 WPF :: I have not and never will use it as it is .Net bound.
 FLTK :: Also look at http://fltk.org/, probably has better OpenGL support.
+2
source share

Be sure to check out the Cockos WDL ("whittle") team (led by Justin Frenkel of Nullsoft / Winamp).

This is an extremely lightweight C ++ library that includes the "WDL Virtual Window System".

I personally have not used it, but I can vouch for the excellent software that was made with it. Extremely efficient and lightweight applications.

Link: WDL

+2
source share

I can not comment on wxWidgets, but WPF is significantly superior to MFC and the good old Win32 API. WPF uses DirectX for rendering and there is 3D support in WPF . Unfortunately, this support is still somewhat rudimentary and not very productive. You can get better 3D performance if you have a Windows Forms control that displays OpenGL (at least we had to do this in a recent project that I was working on). If you want to do 3D rendering in a WPF application, you can take a look at the XNA Framework. The next version of the .NET Framework will also include improvements in WPF, and I'm sure 3D support will be improved.

+1
source share

All Articles