Ok, I had my program working fine, and changed to main message loop to use PeekMessage so I can have a faster loop to render my gl scene. I copied the message loop from a program on a cd and now when I exit the program its process is still active. I found this problem goes away if I change the second parameter (the windows handle) to NULL, but if its hWnd the process is still active. But the example program doesnt use NULL and it exits fine.