<p>Could someone recommend any good resources for creating Graphics User Interfaces, preferably in C/C++?</p>

<p>Currently my biggest influence is <a href="http://www.3dbuzz.com" rel="nofollow noreferrer">3DBuzz.com</a>'s <a href="http://www.3dbuzz.com/xcart/product.php?productid=30&amp;cat=12&amp;page=1" rel="nofollow noreferrer">C++/OpenGL VTMs</a> (Video Training Modules). While they are very good, they cover a large area of graphics programming, so only skim the surface of GUI programming.</p>

<p>This question does relate to "<a href="https://stackoverflow.com/questions/7489/how-do-i-make-a-gui">How do I make a GUI?</a>", where there is also a rough outline of my current structure.</p>

<p>Any response would be appreciated.</p>

<p><strong>Edit:</strong>
I've just read some of the answers and spotted that I've missed some points. I had to type the question twice as I caught the wrong button and lost it.</p>

<p>I missed two important points, first: This will be used cross platform including homebrew on a Sony PSP. Second: I want to create a GUI system not use an existing one.</p>

<p><strong>Edit 2:</strong> I think some of you are missing the point, I don't what to <strong>use</strong> an existing GUI system I want to build one.</p>

<p>Qt in it's current form is not portable to the PSP, never mind the overkill of such a task.</p>

<p>That said I've decided to create an IM-GUI, and have started to prototype the code.</p>

[{'answer_id': 13609, 'author': 'Marius', 'author_id': 1585, 'author_profile': 'https://Stackoverflow.com/users/1585', 'pm_score': 1, 'selected': False, 'text': '<p>Have a look at <a href="https://www.qt.io/download-open-source/" rel="nofollow noreferrer">Qt</a>. It is an open source library for making GUI\'s. Unlike Swing in Java, it assumes a lot of stuff, so it is really easy to make functional GUI\'s. For example, a textarea assumes that you want a context menu when you right click it with copy, paste, select all, etc. The <a href="https://doc.qt.io/qt-5/" rel="nofollow noreferrer">documentation</a> is also very good.</p>\n'}, {'answer_id': 13612, 'author': 'Brian Warshaw', 'author_id': 1344, 'author_profile': 'https://Stackoverflow.com/users/1344', 'pm_score': 1, 'selected': False, 'text': '<p><a href="http://www.fox-toolkit.org/" rel="nofollow noreferrer">http://www.fox-toolkit.org</a> has an API reference, if you\'re looking how to work with a specific framework. Or were you more interested in general theory or something more along the lines of how to do the low-level stuff yourself?</p>\n'}, {'answer_id': 13618, 'author': 'Judge Maygarden', 'author_id': 1491, 'author_profile': 'https://Stackoverflow.com/users/1491', 'pm_score': 3, 'selected': True, 'text': '<p>I wouldn\'t use OpenGL for the GUI unless you are planning for hardware accelerated and/or 3D effects that you don\'t think you would get with a more traditional GUI toolkit (e.g <a href="http://trolltech.com/" rel="nofollow noreferrer">Qt</a>, <a href="http://www.wxwidgets.org/" rel="nofollow noreferrer">wxWidgets</a>, <a href="http://www.gtk.org/" rel="nofollow noreferrer">GTK</a>, etc). If you just need a quick simple GUI for hosting your OpenGL graphics then <a href="http://www.fltk.org/" rel="nofollow noreferrer">FLTK</a> is a nice choice. Otherwise, for rendering the GUI directly in OpenGL their are libraries like <a href="http://www.cegui.org.uk/wiki/index.php/Main_Page" rel="nofollow noreferrer">Crazy Eddie\'s GUI</a> that do just that and provide lots of <a href="http://en.wikipedia.org/wiki/Skinnable" rel="nofollow noreferrer">skinnable</a> <a href="http://en.wikipedia.org/wiki/GUI_widget" rel="nofollow noreferrer">widgets</a> that you won\'t have to reinvent. The window and OpenGL context could then be provide with a portable library like <a href="http://www.libsdl.org/" rel="nofollow noreferrer">SDL</a>.</p>\n\n<p><strong>EDIT</strong>: Now that I\'ve gone back and taken at look your <a href="https://stackoverflow.com/questions/7489/how-do-i-make-a-gui">other post</a> I think I have a better understanding of what you are asking. For a GUI on an embedded system like the Nintendo DS, I would consider using an "immediate mode" GUI. <a href="http://sol.gfxile.net/who.html" rel="nofollow noreferrer">Jari Komppa</a> has a <a href="http://sol.gfxile.net/imgui/" rel="nofollow noreferrer">good tutorial about them</a>, but you could use a more object-oriented approach with C++ than the C code he presents.</p>\n'}, {'answer_id': 14417, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 1, 'selected': False, 'text': '<p>For more information about "immediate mode" GUI, I can recommend the <a href="https://mollyrocket.com/forums/viewtopic.php?t=134" rel="nofollow noreferrer">Molly Rocket forums</a>. There\'s a good video presentation of the thinking behind IM-GUI, along with lots of discussion.</p>\n\n<p>I recently hacked together a very quick IM-GUI system based on presentation on Jari\'s page, and in my case, where I really just wanted to be able to get a couple of buttons and boxes on the screen, and more or less just hard code the response to the inputs, it really felt like the right thing to do, instead of going for a more full blown GUI-architecture. (This was in a DirectX-application, so the number of choices I had was pretty limited).</p>\n'}, {'answer_id': 14574, 'author': 'Herms', 'author_id': 1409, 'author_profile': 'https://Stackoverflow.com/users/1409', 'pm_score': 0, 'selected': False, 'text': "<p>I'll second Qt.  It's cross platform, and I found it <em>much</em> easier to work with than the built in Visual Studio GUI stuff.  It's dual-licensed, so if you don't want your code to be GPL you could purchase a license instead.</p>\n"}, {'answer_id': 15998, 'author': 'thing2k', 'author_id': 3180, 'author_profile': 'https://Stackoverflow.com/users/3180', 'pm_score': 0, 'selected': False, 'text': "<p>I've had a look at the Video from Molley Rocket and Looked through Jari Komppa's cached tutorials.</p>\n\n<p>An IM-GUI seems the best way to go, I think it will be a lot more streamlined, and lot quicker to build than the system I originally had in mind.</p>\n\n<p>Now a new issue, I can only except one Answer. :(</p>\n\n<p>Thanks again to Monjardin and dooz, cheers.</p>\n\n<p>thing2k</p>\n"}, {'answer_id': 16027, 'author': 'epatel', 'author_id': 842, 'author_profile': 'https://Stackoverflow.com/users/842', 'pm_score': 0, 'selected': False, 'text': '<p>I\'d have a look at <a href="http://glam.sourceforge.net/" rel="nofollow noreferrer">GLAM</a> and <a href="http://glgooey.sourceforge.net/" rel="nofollow noreferrer">GLGooey</a></p>\n'}, {'answer_id': 16186, 'author': 'Sven Hecht', 'author_id': 1168, 'author_profile': 'https://Stackoverflow.com/users/1168', 'pm_score': 1, 'selected': False, 'text': '<p>One of the fastest ways is to use python with a gui binding like pyQt, PyFLTK, tkinter, wxPython or even via pygame which uses SDL.</p>\n\n<p>Its easy fast and platform independent.\nAlso the management of the packages is unbeatable.</p>\n\n<p>See:</p>\n\n<ul>\n<li><a href="http://wiki.python.org/moin/PyQt" rel="nofollow noreferrer">http://wiki.python.org/moin/PyQt</a></li>\n<li><a href="http://www.fltk.org/" rel="nofollow noreferrer">http://www.fltk.org/</a></li>\n<li>(tkinter is default and already packaged with python)</li>\n<li><a href="http://wxpython.org/" rel="nofollow noreferrer">http://wxpython.org/</a></li>\n<li><a href="http://www.pygame.org/news.html" rel="nofollow noreferrer">http://www.pygame.org/news.html</a></li>\n</ul>\n'}, {'answer_id': 16658, 'author': 'James Sutherland', 'author_id': 1739, 'author_profile': 'https://Stackoverflow.com/users/1739', 'pm_score': 1, 'selected': False, 'text': "<p>For a platform like the PSP, I'd worry slightly about the performance of an IM GUI solution. With a traditional retained mode type of solution, when you create a control, you can also create the vertex buffer/display list or what-have-you required to render it. With an immediate mode solution, it seems to me that you'd need to recreate this dynamically each frame.</p>\n\n<p>You might not care about this, if you're only doing a few buttons, or it's not going to be used in-game (assuming you're making a game) but, especially if you have a fair bit of text, the cost of rendering might start to hurt if you can't find a way to cache the display lists somehow.</p>\n"}]
['https://Stackoverflow.com/questions/13607', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/3180/']