Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
We're developing/supporting 2 large MFC applications, using VS 2005. Currently, we are looking at various MFC GUI/controls component libraries:
www.bcgsoft.com : "BCGControlBar Pro"
www.codejock.com : "Toolkit Pro"
www.prof-uis.com : "Prof-UIS"
others?
The samples/demos provided for those look all great, and the feature sets seem to match more or less between those libraries.
Has anyone used/reviewed one/more of those?
How is the learning curve?
Advantages/disadvantages?
Toolkit pro seems to be quite popular, id software and Crytek use it for example for their editors. I looked at the BCG once, and the documentation at least was quite bad; didn't have a chance to actually work with the Toolkit pro stuff, but their trial was looking nice.
You could try Visual C++ 2008 Feature Pack available for Visual Studio 2008. It is official part of Visual Studio powered by BCGSoft.
From personal experience: When the need in using Property Grid control have arisen, I've tried BCGSoft solutions, but it was less convenient than using .NET PropertyGrid (through C++/CLI wrapper).
Parts of BCG have been incorporated into MFC in VS2008, so I assume at least Microsoft likes it.
I know one of our products use BCG, and we haven't had any major problems with it. Then again, I rarely work with UI, so I can't really share any first-hand experience.
I used codejock's a couple of years ago. The library was really good, simple to use, good documentation and good, fast support (they even wrote a sample for me to demonstrate what I was asking for.)
I would recommend them, although I have not tried the others you have mentioned.
We're using the new MFC classes from Visual Studio 2008 in a product. Previously we were using BCGControlBar Pro, the conversion to the new MFC classes had to be done by search and replace.
One important thing that BCGControlBar Pro lacks is a resizable layout manager, for this we use a 3rd party codeproject component (which is a pain to use). Codejock has a resizable layout manager.
Another interesting thing that Codejock has is XAML support. Here is their development forum XAML section and (bit dated) XAMLPad like test tool. This would have saved me the time used for creating nice GDI+ gradient buttons (Codejock uses GDI+ for XAML and I had to clone the buttons from a WPF project)
The resizable layout manager and XAML support make "Toolkit Pro" from Codejock a winner in my eyes, even though I haven't used it.
Visual C++ 2008 Feature Pack was included in Visual Studio 2008 SP1. It's not as powerful as BCGControlBar Pro. And it's not for Visual C++ 2005.
Microsoft will provide better official GUI libraries for its Visual C++ and Visual C# products.
I tried both Prof-UIS freeware and BCGControlBar Pro. Prof-UIS is slower than BCGControlBar Pro, but it's easier to use.
Another vendor:
http://www.prof-uis.com
Prof-UIS is an easy-to-use MFC extension library that enables you to deliver Windows applications with a professional and user-friendly interface. More than 200 thoroughly tested and documented C++ classes,
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
Thing is I'm learning how develop Win32 applications in C++. I'm using Visual Studio and windows.h and I'm having a bad time.
I come from Java and Android, where you create a class like MainWindow or OptionsWindow and then you write inside the behavior and instantiate them whenever you want.
But now I'm in C++ and I'm lost.
All examples I see with windows.h library are codes where Main is WinMain inside the window. So, here's is my question: Is there any way where you write different classes for different windows and instantiate them when you need it? something like
OptionWindow ow = new OptionWindow
Or should I write all the code of every window I will need inside the WinMain and then make it visible?
Help Is much appreciated. Thanks.
If you are committed to using just C++, I'd recommend creating a C++/MFC Application with VS2013. Microsoft Foundation Classes (MFC) was a framework that hides much of the drudgery of creating and manipulating windows. It is much easier to get started with than raw Win32 programming.
MSDN has a number of tutorials and articles that may help you get started. I also found this reasonable step-by-step guide to MFC programming. If you search for MFC Programming you should find a fair amount of information/code/examples.
Since you are using Visual Studio 2013 one suggestion by commenters isn't applicable to you. There is a suggestion you could use C++/CLI (it is effectively .NET C++). C++/CLI is often a shim that is used as a gateway for C++ developer migrating to C#. Microsoft no longer supports Winforms through the IDE for C++/CLI applications. There is no longer a Winforms application project for C++/CLI either. If you have VS2010 winforms is availale through the IDE.
If you are writing a GUI and don't wish to use MFC with C++ I would recommend jumping to C#. Find a good book on the subject. Microsoft has an online guide that is for Java developers migrating to C#.
Based on the OPs comment that he'd like to do things more programatically. There is a solution that was created by Microsoft and is still maintained by the open source community. That option is Windows Template Library (WTL). I personally still use it for light weight applications where I don't want to overhead of MFC. It is a set of Windows templates that sit a top ATL (Active Template Library). ATL was originally designed as a set of C++ templates to build reusable binary components using COM.
You can add WTL to VS2013 (it is not part of standard Visual Studio anymore). You can download WTL from http://sourceforge.net/projects/wtl/ . Installation is not straight forward but it does work once installed properly.
Winapi uses a plain C interface, so there are no premade classes available.
If you want to write .net Applications in C++ you can use wpf (Windows Presentation Foundation) or winforms as huseyin wrote in his comment.
If you want to develop native win32/64 applications you have to use a library/framework. Microsoft has the MFC (Microsoft Foundation Classes), but IMHO they are complicated and thus don't like them.
You also could have a look at cross-platform frameworks as qt, gtk or wxWidgets. However there you have to take care the license (qt is available as GPL, LGPL or a commercial license, so you either have to buy developer licenses, put your code also under the GPL or comply with the LGPL).
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
First, I know this is kind of common question, but I could not find the exact answer I am looking for.
I have done many projects in Java using Swing. Starting by just coding the GUI, then later moving onto GUI designers. This proved to be a very quick and easy way to build GUI apps.
But now, I need to move to C++. I am beginning a project which uses a lot of HW resources (DirectX, OpenCV, etc...) I know there are Java libraries for these technologies. However, C++ is definitely the right way to go, considering the internals of this project.
I know C and C++ languages well from MCU programming. Also, I have read many articles on native WinAPI programming, Windows internals, etc. I think I have enough knowledge to start. I don´t want to worry much about GUI design, but it must look appropriate.
I know there are few basic options: Pure WinAPI, MFC, WTL, Qt... I would be very glad if there were some kind of GUI designer tool, but from my research, there is not. There is the MFC wizard which helps to create a basic window, but it is not a designer. The closest thing I found was Qt. But from what I read, it is not using WinAPI for drawing, for in future look and feel of Qt written app can differ from native Windows look.
So, to summarize, please, if you are experienced with creating native Windows C++ Apps with GUI, what would you recommend to me? Specifically, is there any tool or designer I missed?
(I am using Visual Studio 2010 professional, since I have it free thanks to the DreamSpark project)
I recently used Qt4 and was very pleased with the API. I found it straightforward, well documented, and the code is extremely concise.
Qt does an extremely good job of emulating the target OS look and feel (as #In silico pointed out in the comments, Qt actually draws everything itself and does not use native components) Regardless, this can be coded by hand or visually through the GUI editor in their IDE, Qt Creator. If you go this route, I recommend creating your initial GUI project (.pro file) there, then importing it into Visual Studio via the Qt Visual Studio Add-In.
Slots and signals, Qt's event/messaging system, is also worth mentioning. Yes, it's critical to GUI programming, but could also be extremely useful in lower-level code.
I expect Qt would work well in your project, but as always, create a few simple tests to ensure the technologies will work together feasibly.
Here are a few hints:
Don't lock yourself into C++. C# and Java (for instance) can be easily interop'ed with C/C++. (Through PInvoke or C++/CLI for the former and JNI for the later). C++ may not be the ideal language to write a GUI quickly.
Your requirement for "native windows look" is arbitrary and you should think it over. Is that really what you need ?
Winforms. It's an older technology but is still widely used. You use the API from C++/CLI or C# (or any .NET) language.
WPF, a more recent API but that will be harder to deal with from C++, (better with C# or VB)
One of the many GUI toolkit available on the market that have a C or C++ API (QT, GTK, wxWidgets, the VCL, ... list here). Some have "native" looks, some don't. Some have designers some don't. Some are free, some aren't.
If you need simple user interface i recommend use WTL - is simple, lightweight, header-only library, very good wrapper over WinAPI. In Visual Studio you can use form designer for creating windows and use WTL classes for implement interaction with user. WTL have poor documentation but WTL is looking like MFC.
If you want rich possibilities i recommend use Qt. It's very powerful GUI framework with great community.
You can use the C++Builder XE2 (Part of the Rad Studio IDE), which includes the VCL (Visual Component Library), the VCL is a wrapper over the Windows controls (and also includes custom controls) which increase the development productivity.
The wxWidgets c++ class library comes with a screen builder.
VCL is a good way to go. It has a GUI designer tool (Embarcadero Rad Studio XE6) fully native gui developer for C++ and Delphi
Depending on how strict your definition is, you could use .NET Windows Forms or Windows Presentation Foundation and plug logic in from C++, C++/CLI, and C#. That would not be a pure C++ solution. In fact, I wouldn't even necessarily advise using C++ in that situation. Simply using C# would be more intuitive and maintainable. WinForms and WPF have pretty awesome GUI designers though.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I just want to write a very simple C++ program for Windows only that uses a GUI. What library for C++ is free and allows me to do this? (This code is not, and will never be, open source).
+1 for Qt.
Qt is bloody awesome. Once you've hacked around with QT you will never, ever want to go back to any other UI API. Seriously. It's. That. Good.
There's also a free IDE that you can use that makes development even more painless. Oh, and the community is very helpful and generally kicks ass.
All Hail Qt!
You could use WxWidgets. From the blurb:
Unlike other cross-platform toolkits,
wxWidgets gives its applications a
truly native look and feel because it
uses the platform's native API rather
than emulating the GUI. It's also
extensive, free, open-source and
mature.
GTK+ and for C++ GTKmm I guess.
Maybe but maybe also Qt.
I think you could do that with Qt.
Here you go.
WTL is quite popular. If you visit the SourceForge page you will see praise heaped upon the project.
There are long fights about choosing free and/or portable GUI for c/c++ applications. Each programmer has his own favourite, and only few programmers have tried multiple of them so they can compare. So I suggest you to google some more for various comparations.
From what I hear all the free ones suffer lack of documentation and code updates, but all of them have good user support through forums or IRC channels. Qt has better support/userbase but is not completely free (but I can't provide you with details for that).
I have used Visual Studio MFC before and then when I wanted to have free and portable GUI I choosen GtkMM. I have to say that it was PITA to switch as GtkMM is not documented very well, its functionality is sometimes confusing, I had to recompile and modify few things (like widget with in-dialog OpenGL support) but I was able to finish my program successfuly. On the other hand, starting with MFC wasn't easy too.
But I'm not suggesting GtkMM over other ones. So I just can provide the list: Gtk, GtkMM (Gtk++), Qt, wxWidgets.
There are so many C++ GUI frameworks: Qt, gtkmm, wxWidgets (all these are specified above).
Add FLTK to that list.
If it is only for Windows and you use Visual-Studio you may use WinForms or the more up to date WPF. There is a nice GUI designer in the Visual-Studio and it is free for any purposes.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I am looking for a simple C++ library for making GUIs. I tried wxWidgets and GTK, but I think both are complex.
I want your opinion on what to use. Should I learn wxWidgets or you know a better one?
Thanks.
Try Nokia's QT. It's free, awesome and cross platform.
If you only need to support Windows, then you can check MFC or even better IMHO Windows Forms (with Managed C++).
Try Qt, it's the best library out there. Even works cross platform.
You used to have to pay for a licence but they recently changed their licence to the LGPL.
Any GUI toolkit is going to be complex -- GUIs are hard. I've heard good things about QT; I'd suggest GTK (not as complex as it looks) but it's a pain to install on Windows. I've done some work with wxPython, but I wouldn't know about Wx for C++.
you can check MFC and QT
Try out :)
FLTK The Fast Light Toolkit is a cross-platform Graphical User Interface (GUI) written in C++ library and can be use on UNIX/Linux, Microsoft Windows
On Windows you may try WTL instead of MFC. It is more lightweight, works slighly faster then MFC and it is open source (it is used, e.g. in Google Chrome for Windows). As a bad side, it has little documentation.
You can use Visual C++ Express edition with MFC and the new library (from BCGSoft) to create office like GUI. It's powerful and there is a lot of documentation and support on community sites:
http://www.codeproject.com
http://www.codeguru.com.
If you are new in programming, I think you start directly with C# and .net, WinForms offer more tools and its simple to start. and with the mono you can deploy on other platforms as mac OS or LINUX.
To start download the Visual C# Express Edition, it's free.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I want to create GUI applications with C++ on Windows. I have downloaded Qt, and it works well, but it has so much stuff in it and so many header files that I really don't use. It is a nice framework, but it has more than just GUI.
Are there any lighter GUI libraries out there for Windows C++ that is "just GUI"?
FLTK, if you are serious about lightweight.
http://www.fltk.org/
edit:
Blurb from the website:
FLTK is designed to be small and modular enough to be statically linked, but works fine as a shared library. FLTK also includes an excellent UI builder called FLUID that can be used to create applications in minutes.
I'll add that its mature and stable, too.
Even if wxWidgets is named here already:
wxWidgets!
Its a great and valuable Framwork (API, Class Library, whatever you may call it).
BUT: You can divide the functionality of this library into many small parts (base, core, gui, internet, xml) and use them, when necessary.
If you really want to make GOOD GUI applications, you have to use a GOOD API. wxWidgets is absolutly free (QT is not), only needs a small overhead in binary form, linked as dll or o-file is it about 2Megs, but has to offer all that you ever need to program great applications...
And wxWidgets is much more lighter than QT... and even better... :)
Try it...
JUCE is fairly light weight, it can be as simple as one .cpp & one .h file. (Look at amalgamated JUCE) It doesn't look like a standard windows app however. On the other hand, it is cross platform.
CEGUI is a powerful GUI library but I am not sure (since you did not clarify) what you mean by lightweight. It contains a lot of headers, too, but they are all related to the GUI or the rendering of it. On my computer, the current Release built in default VS2010 Release mode takes about 3 MB in total for the dlls. There are of course assets that take space too, but clearly these may vary depending on your needs. It uses XML and image files in the assets, the images take the most space. It requires a bunch of dlls depending on your requirements (png, jpeg, xml parsing dlls) but they are all quite small in Release. So unless you are irrationally pedantic about having too many DLLs in use, this should be no issue.
It is written in C++ (0.7-1.0 will be based on C99 standard, 2.0+ will be in C++11 standard) and supports dynamic and static linking. Dynamic linking is the supported type on Windows. Static linking on Windows is not recommended for CEGUI.
Here a short summary of features:
Modern (uses STL, XML for its asset files, and internally supports C99 standard for maximum compatibility, after the 1.0 Release it will be using C++11 in the development branch). It also has support for unicode characters and all sort of languages (as can be seen in the samples).
Offers the following widgets out-of-the-box: text fields (scrollable), editboxes, multiline editboxes, spinners, checkboxes, buttons, radio-buttons, tabbed windows, progress bars, scrollable panes, sliders, dropdown-menus (comboboxes), menu bars, layout containers (vertical/horizontal) and more
Published under the Open Source MIT license, one of the licenses offering you the most freedom, you will only need to distribute the license file with the application and that's it
Layouts can easily be created and edited using a WYSIWYG editor written in Python. It is called CEED and is also freely available. It has gone through a lot of testing and is suitable to be used for production. A stable Release has been published and new features are in development for the future. An imageset editor is also available in the same application.
As stated, this is free for commercial use. The only obligation you have is to distribute the license file.
CEGUI is fit for cross-platform use. It officially supports Windows, Linux, Mac OS. It has also been used on iOS and Android. Android is supported in the development branch.
It was originally designed as a GUI library for games but it is also perfect for usage in scientific applications, rendering applications, visualisation. Desktop applications can be done as well. A simple Windows-like skin is available in the default assets.
It has been around for over 10 years, has an active community and is a robust, feature-rich and extensible library.
wxWidgets
IUP is the smallest one i know, both in terms of learning curve, DLL size and features
Try eGui (see here or here) or WTL.
try GTK with Glade3.
Microsoft Foundation Class Library (MFC)
Considering you are looking for a WINDOWS ONLY SOLUTION, (and that wxWidgets has been voted up on this thread) you may want to trade off some lightweight-ness and checkout MFC.
As far as Windows is concerned, MFC and wxWidgets seem to compete neck & neck, but overall, the former is lighter than the latter.
Some PROS:-
MSVC MFC RAD support. Visual Studio arguably provides the best "RAD
tool & GUI lib" combo. The only other "dynamic duo" that comes close
is that of QtCreator & QT. wxSmith doesn't fully support all
wxWidgets components, but it keeps improving. Very Very Rich set of
commercial GUI components.
Free (but proprietary).
Very nice when it comes to databound controls.
Some CONS:-
The day you decide to port to other platforms, you will wish you had gone with a cross platform lib.
Proprietary nature of MFC means you will have to navigate licencing very very carefully. But AFAIK, MFC is free to redistribute in binary form.Here's a nice article touching on the "oil and water" that is "MFC and FLOSS applications". Apparently, they just might mix.
Anyways, appart from MFC, I think the FOX-Toolkit also deserves a mention, but just like FLTK, the major downside is lack of decent IDEs and RAD tools as compared to, say, QT or wxWidgets