I'll try to get straight to the point, but first a little background information on my knowledge base with regard to C++. I understand the basics of C++ generally, such as the use of the various types of loops, structures, if statements, enumeration, and other introductory concepts. I also understand some things a little farther along, such as creating objects, inheritance, polymorphism, overloading functions and operators, and to a lesser extent, pointers. So while I can make a simple object oriented program, I'm interested in moving to the next level.
Doing a little research of my own, I've noticed there appears to be quite a bit more to programming than simply hammering out code. Things such as incorporating libraries into my work and using various APIs is beyond the scope of what I'm able to do right now, but I'd like to get to that point. Is there a source that you would recommend that would explain what all of these things are, how they can be used to aid you in your software development excursions, and things of that nature?
I guess to ask a simpler question, what information would I need to know to create a small widget that has very limited functionality using C++? From what I've been able to find myself, I would need to use a widget toolkit of some sort, but again, I wouldn't even know where to start looking for a toolkit of this kind, much less be able incorporate said toolkit into my work. Thanks for your time.
ANSWER: Hello Eric.
To take your programming to the next level, I recommend reading about desing patterns. I recommend starting with the Head First Design Patterns book from O'Reilly publishing.
Once you are done reading that twice then read the GoF Design Patterns book. The ideas in those books will help you to unsderstand how to apply the basic object oriented concepts that you say you are familiar with. I also recommend the Head First Object Oriented Analysis book. It does not matter at all that those books are using the Java language. The elements of Java which they use are almost identical with C++. It is the design concepts which you are looking for, and the concepts translate directly into C++.
I am not sure what you mean by widget. If you mean an X window widget, I cannot help you with that. Give me an idea of what you are trying to accomplish, and maybe I can help.
---------- FOLLOW-UP ----------
QUESTION: Follow up question:
Thanks a million for responding to my question. I'll definitely look into your recommendations.
To elaborate a little further about the widget question, I guess what I'm asking is how to incorporate some GUI elements into a program. I know that one way to do this is using Windows Forms, but while I was doing a little research I ran across a few things relating to what are called "Widget toolkits" which apparently kind of accomplish the same thing that Windows Forms does (At least that was my interpretation. The functionality is quite different from one method to the next I would imagine). Here is a link that may help you understand my question a little better http://en.wikipedia.org/wiki/Gtkmm
The example code helps to a point, as in I understand the example provided on that page, but how would I go about implementing this toolkit? Actually, the more appropriate question would be, at what stage of programming would I begin to get into this sort of thing? Is it extremely advanced and way down the line stuff or is it something that I could start small with and use some of my existing knowledge to create some nominal GUI programs? Thanks again for your time, I very much appreciate it.
I think you should not hesitate to explore gui programming. I think it is not correct to regard it as more advanced than any other form of programming. In any form of programming, programs can vary from the simple to the complex so I recommend you start with simple sample programs. Copy them into your programming editor, compile them and link in the required libraries. Learning starts with imitation. Innovation comes later.
I have not used the Gtk toolkit but I find most open source projects to be high quality and I'll bet Gtk is too. I can also recommend Qt from Nokia because it comes with a very good development environment (very much like visual studio), good learning resources (free books and tutorials), and a very nicely designed programming interface. It is free, and available for windows, linux, and mac. See http://www.qtrac.eu/C++-GUI-Programming-with-Qt-4-1st-ed.zip
for a free book.
I would not recommend using windows forms with C++. If you want to do windows dot net programming, use C# or visual basic. The C++ in dot net has been changed to support the dot net model and is, in my opinion, quite ugly.
Good luck and best regards