while (GetMessage(&msg, NULL, 0, 0)) 
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

解决方案 »

  1.   

    系统的消息循环机制,建议你看一下  《深入浅出MFC》第二版,很经典的一本书,里面有详细介绍
      

  2.   

    好 谢谢你因为在debug的时候 跳过这步程序就崩溃了 进入却又永远跳不出 先查查书再说了
      

  3.   

    windows的消息循环机制,建议你看有关消息方面的书
      

  4.   

    GetMessage从消息对列中取出消息,TranslateAccelerator处理是不是
    采单的加速键,如果是,则发送WM_COMMAND or WM_SYSCOMMAND 到适当的
    窗口程序。如果不是,则解释消息(TranslateMessage),在派送消息到各个
    窗口(DispatchMessage)其中,hAccelTable 是加速键表的句柄,可用LoadAccelerators把表load 进来如此进行消息的循环处理
      

  5.   

    打个比方给你说比如一个MFC程序用到
    while(1){} 是个死循环,你的鼠标点击消息都失效了,如果 加入你的消息循环
     while(1)
    {
    while (GetMessage(&msg, NULL, 0, 0)) 
    {
    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    }}
    你的很多处理消息就可以执行了,比如点击鼠标就有效了