这是消息处理机制,建议你了解一下Windows的消息机制看看:PeekMessage
TranslateMessage
DispatchMessage

解决方案 »

  1.   

    你应该是在一个进度条例子里看到的吧?其中有个句子是这样的吧:
    while(i<...)
    {
    DoEvent();
    }
    我的理解是这样的:因为这个程序只有一个线程,就是应用程序主线程,所以主线程执行到这个while(i<...)时,他会一直执行,只到i<...这个条件变为假的了,他才跳出,你想啊,假如说i<10000000000000000000,这么大一个数,他得执行多久才能跳出啊,如果说是得执行一个小时才跳出,那么在这一个小时内,当用户点击“关闭”按钮时,系统把这个“关闭”消息放在这个主线程的消息队列中,但是呢,因为这个主线程一直在执行这个while(i<..)的循环,他不能够到消息队列中去取消息,直到while(i<...)循环完了,他才有空到队列中取消息,于是取到“关闭”消息,程序退出。要是你想在循环的时候也能取到消息怎么办呢,就在while(i<...)循环里去取,每循环一次我就取一次消息(就是调用DoEvent()函数),这样你点“关闭”的这个消息不是就被取出来了吗,一取出来了,程序就退出了。
      

  2.   

    这个函数就是消息循环,如果程序中的消息需要这个函数进行分派的。main函数里面主要就是在搞这个循环。