I feel that I know c++ well enough to start making windows applications but I don't know which api to use. I have looked at wxWidgets, win32, mfc, win32++, and WTL. All of them look fairly complex and I have no idea where to start, so which one do you recommend and could also link me to good tutorials of whichever you recommend?
You'd be well-served to use a cross-platform API. This isn't the 90's anymore, Toto.
Also, win32 is pure evil and MFC is apparently deprecated.
>>1
wxWidgets
I dunno what it's like for the programmer, but GTK is fairly simple for the end-user. (and plenty of people already have it installed, if they've been using gaim/pidgin, xchat, or cross-platform software.)
*or other cross-platform software
GTK has traditionally been UTTERLY HORRID on Windows. I doubt that will have changed much. Besides, this is Windows, not user-hostile Linux, and you're not supposed to have third-party dependencies.
wxWindows is decent at least for fairly simple apps. It's also decent on Linux, but horrible on OS X. Then again, there exists no cross-platform GUI library that is not horrible on OS X, as OS X has far stricter HID guidelines than other OSes.
> Then again, there exists no cross-platform GUI library that is not horrible on OS X, as OS X has far stricter HID guidelines than other OSes.
Qt?
Aside: Qt's moc is proof that C++ has... shortcomings.
>>7 IIRC Gtk will be using cocoa or something-whatever in mac os (ultra alpha for now) so it will look exactly the same as any other mac os app.
>>4 GTK is hell...that's because it's object-based... and in C... which leads to managing object's anything through long options... not easy to programm at all. gtkmm (gtk for c++) is a lot nicer though
Qt is horrible on OS X.
It's not just the look that is the problem. The problem is that apps do not follow the HID and thus behave in unexpected and unwanted ways.
>>11
That's a problem with the programmers, not a problem with the libs or APIs. There's no shortage of retarded interfaces made in Cocoa out there, either.
It's not really the fault of the programmers. They can't be expected to know how a Mac app is supposed to behave if they have never seen a Mac in their entire lives, and sometimes the Mac behaviour would be wrong on their home platform anyway. This is the basic problem of cross-platform interface kits. They work at far too low a level and can't compensate for higher-level behaviour.
>>8
moc was created back when C++ lacked many fetures. In gtkmm all the things like signals are implemented without any macros or external preprocessors.
>>14
Interesting to know. How do they do it? Template metaprogramming?
>>15
Slot objects declared as members of an upper class, I think. Kind of like Boost's signals (or possibly exactly that thing). Perhaps combined with a... "boost::signal<something> &get_signal(const char *name)"-like accessor.