LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    ... ...
    switch(message)
    {
        case WM_KEYDOWN:
        SendMessage (hwnd, KEYDOWN, 0, 0) ;
    }
    ... ...
}

解决方案 »

  1.   

    这是windows的消息处理,他在整个的消息循环中,你仔细看看整个过程,他是有出口的。不会死的。(具体过程我不太清楚,你看看深入浅出MFC)
      

  2.   

    有跳出循环的条件啊,如wm_close
      

  3.   

    是啊,这个是死循环的。但它有跳出语句的
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    如果你将此句不要,就跳不出来了。
      

  4.   

    是死循环,但是你看不出来!
    加上这句话,你就知道了。退出程序的时候,你看i=?case WM_KEYDOWN:
            SendMessage (hwnd, KEYDOWN, 0, 0) ;
    i++;
      

  5.   

    交程系统处理了,SendMessage (hwnd, KEYDOWN, 0, 0) ;默认应用个return defaultwndproc()
      

  6.   

    这不就是WINDOWS的消息循环么?当然要不停的循环咯——一直到WM_DESTROY
      

  7.   

    KEYDOWN和WM_KEYDOWN不同吧?如果是打错了,那感觉上确实是死循环啊。测试一下就知道了。
      

  8.   

    真正的循环当然不在这里而是在while字句中
    当然应该避免的是在消息处理中发送给同一窗口相同或相关相互牵连的消息,
    这样比较容易引起死循环或者内存越界的情况
      

  9.   

    这涉及到SendMessage是将消息发送给WndProc还是放到消息队列中,程序我试过不会引起死循环,所以应当是后者。即SendMessage再次将WM_KEYDOWN发送到消息队列中,不知我说的对不对
      

  10.   

    假如while(1)是一个没有出口的循环那才是,或者你有出口,但是由于逻辑错误,使得根本没有出口的可能就.....