I am having a bit of trouble understanding why the message loop is important. So lets say the user types in A which goes into the message queue. THEN the message loop takes it and then sends it back? This is the part I don't understand. Why does it send it back to windows. Wouldn't it be simpler just to have windows either send it directly to windows procedure OR have message loop send it to the windows procedure?