C#中的消息被Application類從應用程序消息隊列中取出,然後分發到消息對應的窗體,窗體對象的第一個響應函數是對象中的protected override void WndProc(ref System.Windows.Forms.Message e)方法。
它再根據消息的類型調用默認的消息響應函數(如OnMouseDown),默認的響應函數然後根據對象的事件字段(如this.MouseDown )中的函數指針列表,調用用戶所加入的響應函數(如Form1_MouseDown1和Form1_MouseDown2),而且調用順序和用戶添加順序一致。
根據這個流程,我做了個模仿程序,有不足的地方還請大家提供更完善的補充。