So many questions!
The 'Not Responding' issue is explained by S_M_A. You can fix it with either working threads, or by processing Windows messages from time to time. Use MsgWaitForMultipleObjects()...