RT

解决方案 »

  1.   

    要懂这个东东,可能你还需要懂得Windows消息的发送和处理过程。参见:
    http://www.vczx.com/article/show.php?id=861我个人的理解就是窗口过程处理函数可能在同一时刻被多个消息来源所调用,所以需要保证调用的可靠性。重入就是相同的操作应该产生相同的结果!呵呵
      

  2.   

    可重入性,简单的讲,就是在执行此函数的过程中,允许再次调用此函数。一个最简单的例子就是递归函数。在 Windows 下,一个窗口要能正常工作,需要对消息队列中的消息进行处理,而处理函数正是我们所熟悉的回调函数。由于在处理一个消息的过程中,有可能要导致处理别的消息(例如你在WM_MOUSEMOVE的处理过程中可能会需要得到点击命中值而调用了SendMessage(hwnd, WM_NCHITTEST, ...)),此时则会再次进入你的回调函数。除此之外,Windows 中的回调函数通常是属于一类窗口共有的,所以还会发生多个窗口同时调用回调函数的情况。
      

  3.   

    to dandycheung(珠穆朗玛):
    正如你所说的,在WM_MOUSEMOVE的处理过程中,如果我调用了SendMessage(hwnd, WM_NCHITTEST,...),
    窗口过程是不是要等待处理完WM_NCHITTEST消息,也就是等待SendMessage()返回,再接着往下处理WM_MOUSEMOVE消息?