The Class is the primary thing that makes C++ different than C. A class is basically like a C struct, except that it also can contain functions which manipulate the data contained in the class. It also adds in additional capabilities, such as protecting the data / functions from access by other classes. Classes can also be derived from one another, which is a much more elegant method of reusing code. For example, you could have a base class in a DLL, and in an application build off of the functionality of the base class. MFC (Microsoft Foundation Classes) does a great deal of this. For example, the basic window class is CWnd. Controls, such as buttons, trees, lists, edit boxes, etc., are built off of the CWnd class. Thus when you want to move a button (MoveWindow), you aren't calling code in the CButton class, but the code that is in the CWnd class it is derived from. So if you are familiar with the (huge number of) CWnd member functions, then you can apply them to any object derived from that class. CodeGuru has a huge amount of source code specific to the MFC. C++ and MFC are extremely well suited for creating / expanding windows controls. If you go with MFC, then you are commiting your code for use in Microsoft Windows only. Period. There was at one time a version of MFC for Macintosh, but to my knowledge that product died a long time ago.<br><br>An advantage of using structs over classes is that the struct is just a chunk of memory, exactly large enough to store all the members it contains. Thus you can read directly in and out of a file into / out of a struct. This makes for extremely easy file IO. You can't do that with a class.<br><br>There is also additional runtime overhead to using C++ over C. Especially when using the CString class. I have come to avoid that class more and more, where I relied on it heavily in the past. You really have to watch, because often easy, quick coding comes at a cost to runtime performance. You only write code once (ideally), but it is executed literally millions of times (in loops, etc). It is worth extra coding effort so that the optimizations are where they belong, in the execution of the app, as opposed to optimized code writing. That is one of the reasons I am fundamentally against Visual Basic (etc). The running application will require the device to work much harder to perform a given task, just so the programmer didn't have to when they were writing the software. That may be fine for a 1 ghz Pentium III machine, but not for a Pocket PC.<br><br>Most games (Quake included) are written in C. My suggestion is to use MFC for more standard windows apps that do not take over the entire display (not using Game API). You should avoid MFC for games. Don't make the mistake of throwing in CString or similar MFC class because you don't feel like handling string manipulation yourself. This would come at a huge cost to portability (and performance), for the day you want to port your award-winning game to Playstation 2.

<br><br>Don't ask me where this thread is going... <br><br>Dan East