1.在OnDestroy等Windows消息处理函数里,慎用WaitForSingleObject函数,如果等待的对象再被通知之前,另外的线程直接或间接触发了其他消息处理函数,则会引发消息排队,由于当前的消息处理函数正在WaitFor并没有返回,所以其他消息函数可能无法被系统调用,导致死锁。这样程序就无法正常退出了。
2.另外在调用会直接或间接触发消息处理函数的函数之前应该使用IsWindow(m_hWnd)对消息的处理窗口进行验证,避免调用时窗体资源已被释放被系统回收而产生的警告或崩溃;