重载MainWndProc函数应该是这样的。

解决方案 »

  1.   

    在C++Builder里可以,但是到delphi里就不行了,你能举个例子或有源程序吗,谢谢了!
      

  2.   

    POSTmessage(HWND_BROADCAST,mymessage,0,0); 
     
    这个可能对你有用!
      

  3.   

    严格的来说,应该是窗口过程收到后转发给TMYMSG,只不过这个窗口过程不是DefaultHandler。TApplicationEvevts.OnMessage与TApplication.OnMessage是一样的,事实上TApplicationEvevts截获了TApplication.OnMessage,它的好处是让TApplication事件的响应变成了可视化编写的。我建议用第一种方法,因为用第二、三种办法,如果你用SendMessage向窗口发送消息时,第二、三种办法不会响应,消息是直接发送到窗口的,不经过应用程序。况且,第一种方法更直接。至于发送者,你的希望不会变成现实,因为TMsg是这样定义的:
      TMsg = packed record
        hwnd: HWND;
        message: UINT;
        wParam: WPARAM;
        lParam: LPARAM;
        time: DWORD;
        pt: TPoint;
      end;
    没有Handle成员,有hwnd成员。但它的意思是接收消息的窗口句柄。不过它确实多出了两个成员:time, pt,这两个数据可以通过GetMessageTime和GetMessagePos得到
      

  4.   

    在自己的程序中使用setwindowlong更换子控件的处理程序为自己的处理程序。最后在程序退出前重新恢复为系统的处理程序。在自己的程序段中可以对子控件消息进行操作。
      

  5.   

    yuefengzzh(悦风) 
    我看不太懂