分析C#中消息模拟工作流程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分析C#中消息模拟工作流程

分析C#中消息模拟工作流程   C#中消息的工作流程:   C#中的消息被Application类从应用程序消息队列中取出,然后分发到消息对应的窗体,窗体对象的第一个响应函数是对象中的protected override void WndProc(ref System.Windows.Forms.Message e)方法。   它再根据消息的类型调用默认的消息响应函数(如OnMouseDown),默认的响应函数然后根据对象的事件字段(如this.MouseDown )中的函数指针列表,调用用户所加入的响应函数(如Form1_MouseDown1和Form1_MouseDown2),而且调用顺序和用户添加顺序一致。   根据这个流程,我做了个模仿程序,有不足的地方还请大家提供更完善的补充。   using System;   //创建一个委托,返回类型void,两个参数   public delegate void KeyDownEventHandler(object sender, KeyEventArgs e);   //数据参数类   class KeyEventArgs : EventArgs   {   private char keyChar;   public KeyEventArgs(char keyChar)   : base()   {   this.keyChar = keyChar;   }   public char KeyChar   {   get { return keyChar; }   }   }   //模仿Application类   class M_Application   {   public static void Run(M_Form form)   {   bool finished = false;   do   {   Console.WriteLine(Input a char);   string response = Console.ReadLine();   char responseChar = (response == ) ? : char.ToUpper(response[0]);   switch (responseChar)   {   case X:   finished = true;   break;   default:   //得到按键信息的参数   KeyEventArgs keyEventArgs = new KeyEventArgs(responseChar);   //向窗体发送一个消息   form.WndProc(keyEventArgs);   break;   }   } while (!finished);   }   }   //模仿窗体类   class M_Form   {   //定义事件   public event KeyDownEventHandler KeyDown;   public M_Form()   {   this.KeyDown += new KeyDownEventHandler(this.M_Form_KeyDown);   }   //事件处理函数   private void M_Form_KeyDown(object sender, KeyEventArgs e)   {   Console.WriteLine(Capture key:{0}, e.KeyChar);   }   //窗体处理函数   public void WndProc(KeyEventArgs e)   {   KeyDown(this, e);   }   }   //主程序运行   class MainEntryPoint   {   static void Main()   {   M_Application.Run(new M_Form());   }   }

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档