I write a lot of little utilities and helper apps in Autohotkey because I like that I can share them with others without worrying about dependencies -- it just works.
I decided that I would like to start writing future utilities in c++. However, when I started researching about what the best GUI framework and IDE is for small, standalone utilities I became a little overwhelmed and confused.
Eventually I settled on Qt. However, it just won't install on my laptop and actually at one point caused a blue screen of death. I got it to install on my desktop but there seems to be dependency issues that can't be resolved unless I "make" something. When I try to "make" it I just get error that no one can seem to help me with. So I'm pretty much done with Qt.
Someone recommended to just use MFC but then I read that if you embed (or statically link) the DLLs then you can cause heap problems.
So in the context of an experienced .NET developer who occasionally has to read/debug/fix c++ code and who has never written a c++ app from scratch, what is the best (non Qt) framework for a GUI, and the best IDE (and by best I mean not notepad but something that will provide code completion and some help for a newbie)(yes, I know best is relative), for creating a standalone executable that I can just give to someone and it just works?
for the framework: sfml+tgui
for the ide: i like to use gedit but i guess if you want a fully fledged ide and not an editor code::blocks. just make sure that when you make your c++ exes that your statically linking to sfml and not dynamically.
If you are strictly Windows, grab Visual Studio and make a C# project. You may need to buy the professional version, but work might hook you up. With VS and C#, you're basically going to be drag/dropping buttons where you want them, and VS will make the code for you ( all you need to do it write the logic ).
I would say the best framework is going to be the easiest one for your clients to use.
sfml+tgui looks interesting although their site keeps timing out on me. And doesn't seem to be real popular but I'll keep it on my list.
code::blocks looks cool.
Thanks.
LowestOne
C# requires the .NET runtime which some people, I found, do not like to download, and nor would I want to force someone to have to download just for my little app.
What you're looking to do is not really C++'s strongest area.
If you only care about Windows, the C# + .NET is one solution. I would not worry about having .net as a dependency, as it has come bundled with the OS since WinXP, so unless your users haven't updated their computer in 10 years they will have it installed.
Alternatively, for a bit more portability you can go with Java. Which of course requires Java as a dependency... but again it's one of those things that virtually everybody already has installed whether they realize it or not, so I wouldn't worry about it.
If that's no good... and you REALLY want to use C++... you can use wxWidgets, which is a great widgetry. You can link to it statically so you don't have to pass the dependency on to the user. However note that if you do this, your exe will be pretty large (over a MB for a very simplistic program). So there's a tradeoff.
Alternatively there are smaller widgetry libs. TGUI has been mentioned. FLTK is another one. Although personally I find FLTK to feel "unnatural" as its owner drawn and not native controls (TGUI seems to be the same idea).
no it doesnt. at least not the latest build. back when i was using windows a lot my friend got me this hex viewer and it wouldnt work because i didnt have the proper .net runtime installed. and i was on windows 7
Yeah, C# is just not an option. I know too many people still on XP and who have horrible internet and some who just refuse to download .NET because of principal. (I'm surprised so many people on a c++ forum are pushing C#.)
I looked into wxWidgets and it's pretty cool. I might give it a try even though the size is over a MB it seems that a simple MFC app is over 3 MB.
I'm actually thinking of just using Python and its Tkinter for the GUI. And then just using PyInstaller to make it a single exe. It'll probably be easier.
There is a framework for C++ called openFrameWorks but I don't know if it has GUI.
You could try Ultimate++.
If you're giving up on C++ try Lazarus+freepascal.
There is a RAD called ecere that uses it's own langauge based on C but is object oriented.
Try some of the Basics out there like freebasic or NaaLaa, smallbasic (.net though).
For java like language maybe Processing.
There is a portable code::blocks version called CodeBlocks edu that has wxWidgets and FLTK included if you want to try that but the version of codeblocks it uses is quite old.
Holy cow, what a great list! Those are all really cool and I'd love to learn all of them.
It's hard to tell though which allow standalone executables and which do so without complicated steps e.g. ecere. I wish the web sites made this more evident/clear.
I'm surprised so many people on a c++ forum are pushing C#.
Why? Being a software developer isn't about picking one language and then disparaging everything else like some partisan sports fan. It's about understanding the strengths and weaknesses of the various tools available, and selecting the best tools for the job.
@op if you compile those from source then I'm sure you can compile it to be statically linked. Although most libraries give options for static and dynamic