愚已弄清windows和vcl传递消息的做法,vcl通过InitWndProc和MainWndProc函数兼容了windows的消息。
1、vcl窗体建立(执行creat过程)时运行TWinControl.Create过程
  (Controls中)。该函数把MainWndProc函数指向FObjectInstance指针
  该完成此功能的代码为:FObjectInstance := Classes.MakeObjectInstance
  (MainWndProc)
2、执行TWinControl.CreateWnd过程(Controls中)。该过程中的几行代码如下:
      WindowClass.lpfnWndProc := @InitWndProc;  
      WindowClass.lpszClassName := WinClassName;
      if Windows.RegisterClass(WindowClass) = 0 then RaiseLastOSError;
   代码解释如下: 
      第一行:InitWndProc作为标准的windows窗口函数赋给
              WindowClass.lpfnWndProc。该InitWndProc函
              数的入口参数是标准的windows消息参数但
              InitWndProc函数中的函数SetWindowLong(HWindow,
              GWL_WNDPROC, Longint(CreationControl.FObjectInstance));
             把消息处理的过程交给FObjectInstance指向的函数
             来处理也就是MainWndProc处理
      第三行:把InitWndProc函数注册为windows标准窗口函数
3、经过第1和2步骤工作后(初始化定义)。Windows接受到消息后工作如下:
      1) windows把消息发送给windows的标准函数InitWndProc(该函
         数是所有vcl消息函数的最底层函数)
      2) InitWndProc函数接到消息后转交给MainWndProc(var Message: 
         TMessage)过程处理。
         比较两个函数:
         function InitWndProc(HWindow: HWnd; Message, WParam,LParam: 
                              Longint): Longint;
         procedure TDragObject.MainWndProc(var Message: TMessage);
          可以看出InitWndProc带的是windows的标准消息参数,但
         是MainWndProc的参数是vcl的特有参数,因此,delphi把windows
        参数在这两个过程中兼容了。
      3) 执行vcl格式的过程。后面的函数自动带delphi vcl的隐含参数Self★★★★★★★★★★★★
疑问:望熟悉消息机制的朋友告知一二
      当vcl接到消息后的处理机制是什么?vcl中窗体包含控件,控件和控件在窗体中有一个层次关系,消息传递并非是这种层次构架,感觉更像并列构架,到底是什么方式?
      在我单步追踪时,所有windows消息都经过InitWndProc和MainWndProc之后如何分发(暂且用这个不准确的词)给组件?单步调试只能追踪到这里。控件的层次关系有没有影响到消息?用单步追踪根本无法得到解决,设置断点后就进入消息循环追踪了,同行有没有好的了解该机制的方式告知? 多谢了