推荐你去看候捷的《深入浅出MFC》,说得详细!!!

解决方案 »

  1.   

    就讨厌这样推荐别人去看书的回答! 等于没有说一样!
    本来很简单的几句话就讲完的道理,非要搞的神秘西西的!消息循环 简单的不能在简单了
    windows的机制 就是 消息的机制! 所以的命令 都是通过消息来进行的
    你在任何一个窗口上做的动作 都会有相应的消息在发送 接受 和处理!
    你可以通过在消息循环里 调用
    case WM_TIMER:
         MessageBox();
    break;
    case WM_LBUTTONDOWN:
         MyFunction();
    break;
    这样的代码来处理 你要处理的消息(这点HOOK 可以说是最明白了一个解释了)
      

  2.   

    在WinMain()函数中会看到消息循环的主体while (GetMessage (&msg, NULL, 0, 0))     {          TranslateMessage (&msg) ;          DispatchMessage (&msg) ;     }    GetMessage()用于接受消息,在接收到除 WM_QUIT 之外的任何一个消息后,GetMessage()都返回TRUE。如果GetMessage收到一个WM_QUIT消息,则返回FALSE,如收到其他消息,则返回TRUE。因此,在接收到WM_QUIT之前,带有GetMessage()的消息循环可以一直循环下去。只有当收到的消息是WM_QUIT时,GetMessage才返回FALSE,结束消息循环,从而终止应用程序。
        GetMessage()接受到非WM_QUIT消息后,就进入消息循环。它首先要经过函数TranslateMessage()进行翻译,这个函数会转换成一些键盘消息,它检索匹配的WM_KEYDOWN和WM_KEYUP消息,并为窗口产生相应的ASCII字符消息(WM_CHAR),它包含指定键的ANSI字符.但对大多数消息来说它并不起什么作用,所以现在没有必要考虑它。
        DispatchMessage()将消息传送给窗口所指定的 窗口过程 。
        接下来windows调用 窗口过程 。窗口过程的任务是处理消息,也就是对不同消息进行不同的处理(响应),针对窗口过程编程也就是API编程的基本思路。
        以下是一个典型的窗口过程。
        LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
         HDC         hdc ;
         PAINTSTRUCT ps ;
         RECT        rect ;     switch (message)        case WM_PAINT:
              hdc = BeginPaint (hwnd, &ps) ;          GetClientRect (hwnd, &rect) ;          DrawText (hdc, TEXT ("你好!"), -1, &rect,                    DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;          EndPaint (hwnd, &ps) ;          return 0 ;
              case WM_DESTROY:          PostQuitMessage (0) ;          return 0 ;     }    别的不用管,就盯住
    switch (message)
    {
    case ***:
    case ***:
    }
        这个结构(这个词有点用词不当)。例如:对WM_PAINT消息的处理(这是一个改变窗口,如大小改变,或被别的窗口遮住后,产生的消息,),以上代码显示了 你好! 
    重复刚才的话,对不同的消息进行相应的处理,是API编程的基本思路。你不处理的消息Windows回传给DefWindowProc进行缺省处理。
        处理完一个消息后,return 0 ;使程序退出窗口过程,回到消息循环,等待下一条消息。

        总结一下:用户动作-----Windows接手后产生消息----程序用消息循环接受消息----
    DispatchMessage()将消息传送给windows----windows调用窗口过程----窗口过程处理消息----返回消息循环----等待下一条消息的产生(用户的下一动作)
        建议你阅读Charles Petzold的《Windows程序设计》(5th)很清楚地
        到vc知识库下载《SDK之路》NO.1也不错,这个帖子参考了以上的内容。
      

  3.   

    到vc知识库下载《SDK之路》NO.1也不错
      

  4.   

    那麽有谁知道怎麽在MFC中修改消息循环__CDialog::DoModal,但不影响对话框的使用