I see you say you started off with a template for making a window.
Making a window is definately not a beginners environment.
Just go through everything at that link i gave you, in order, and you should be fine.
It may seem crazy to have to go through 40 tutorials befoer you make a window, but time it takes you to make any program decreases as you learn more structural and abstract concepts.
You can find more things on your own as long as you know what to search for...
Heres a(n) (ordered) list i've given others: you may find it usefull ... Just dont be scared by it.
{
??? simple data types: beginning with int.
??? assignment operator, addition and subtraction, multiplication etc.
??? the (quite-obvious) semi-colon.
??? looking at more data types; char, unsigned int VS signed int, shorts, floats, doubles, (Mention word 'instance' here.) and then:
??? boolean values
??? initialising assingment
??? boolean operators
??? if
??? else
??? while
??? increment and decrement operators
??? for
??? do while
??? arrays
??? references
??? const values
??? less intuitive operators, eg: binary and, or, xor, complement, mod, lsh, rsh
??? literals
??? order of expression evaluation
??? pointers
??? pointer iteration (through array)
??? calling functions
??? calling functions with parameters
??? dynamic allocation, ie 'new', and dynamic deallocation ie 'delete'.
??? Also, the C way of this: 'malloc' and 'free'
??? why iostream, not iostream.H lol.
??? std::cout
??? std::cin
??? functions
??? global variables, and thier pitfalls
??? enum
??? return
??? parameters
??? references as parameters
??? const, again, only with parameters this time.
??? implicit aggragates
??? multy dimensional arrays
??? namespaces
??? confined construction and deconstruction using braces '{' and '}'
??? use and using
??? std::ifstream
??? std::ofstream
??? C style string manipulation
??? std::string
??? std::stringstream
??? static keyword
??? prototyping functions
??? Proper organisation of files: .Hs being included in multiple C++ files that get linked together.
??? Understanding from a user-point of view what the compiler does
??? typedef
??? function overloading
??? inline
??? structs, C style
??? unions
??? some standard C library stuff, like rand(, time(), sin()
??? recap on pointers + '->' operator //important step: possibly the hardest is when you come to use this to delete an item in a linked list (next stage).
??? linked lists //get past this and your into the world of unapplied
??? multi dimensional dynamic arrays, and why one should understand pointer syntax as early as possible in using these things: Make a big leap over a tall wall, and then you wont, like many, walk face into it, and think its all so confusing and hard and freakily random. Tip about pointer syntax: It all makes perfect semantic sense (with respect to a very discrete set of rules).
??? STL algorithms
??? implemeting your own common/usefull algorithms eg searching, sorting
??? STL objects: vector first, then lists, maps, sets, stacks etc
??? function pointers
??? typedef on function pointers
??? typedef on arrays
??? extern
??? template functions, and their compile time instantiation.
??? classes, private and public
??? methods
??? encapsulation
??? constructors
??? deconstructors (aka destrutors)
??? copy constructors
??? summary on object self-update and integrity
??? some examples of classes=>getting used to an abstract approach to the highest layer of a program.
??? implementing your own abstract containers for integers
??? overloaded operators
??? function pointers (being just objects) of function pointers=> arrays of functions
??? nested class.
??? inheritance
??? polymorphism
??? multiple inheritance
??? virtuals
??? pure virtuals, hence the Abstract Base class
??? static class members
??? implicit class fiddlings, and using the explicit keyword.
??? template classes.
??? int: special template argument.
??? default template arguments.
??? More class implementing: eg: make your own binary tree class, linked list class, dog class if you really wanted.
??? pointers to members
??? pointers to member methods
??? template specification
??? partial template specification
??? template metaprogramming.
}
Its important to practice using these techniques: Write programs using them as you learn.
Eg: once at one stage, write programs using the rest of he techniques together, if you can.
This may seem unusual as while going through the stages of learning the above, you can't really apply what you have learned into a visually interesting program.
Some (well ... everyone) write programs that do nothing but deal with console windows during earlier stages.
I wrote programs that done nothing other than demonstrate the technique that i had learned (experimanting and testing the limits of my knowledge of that technique), instead of writing programs dealing with expected input and output. But thats something you can decide for yourself.
Very basic example of a program merely demonstrating an if statement at work:
#include<iostream>
int main()
{
using std::cout;
using std::cin;
using std::endl;
int x;
cin >> x;
cout << endl;
if( x < 10 )
{
cout << "x is less than 10" << endl;
}
else
{
cout << "x is greater than or equal to 10" << endl;
}
cin.get();
return 0;
}
I wouldnt recommend conciously learning things.
Its better to let it slip in through understanding and practice. That way, you cannot forget ... e v e r !
Oh, and a basic tip so you never forget which order the '<<' and '>>' go with 'cin' and 'cout' (Dont know about you but i messed syntaxical things up alot at first in C++: It was very discouraging so i tried some BASIC for a while) :
With cout << x; , x is being copied into cout, so it gets displayed on the screen, so the '<<' is pointing in the direction of 'cout'.
With cin >> x; , a value in cin (an input value) is being copied from cin, into x, therefore the '>>' points in the direction of x, as though the value is moving into 'x'.
When learning the semantics behing syntax (What all the symbols mean), think carefully about why they mean what they mean, and why they are used like that.
Then, your brain wraps that concept youve learned into its own little nest in your mind, full of masses of details about core items which are therefore very easily detected when using your memory.