欢迎来到天天文库
浏览记录
ID:15361221
大小:33.00 KB
页数:5页
时间:2018-08-02
《分析c#中消息模拟工作流程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、分析C#中消息模拟工作流程 C#中消息的工作流程: C#中的消息被Application类从应用程序消息队列中取出,然后分发到消息对应的窗体,窗体对象的第一个响应函数是对象中的protectedoverridevoidWndProc(refSystem.Windows.Forms.Messagee)方法。 它再根据消息的类型调用默认的消息响应函数(如OnMouseDown),默认的响应函数然后根据对象的事件字段(如this.MouseDown)中的函数指针列表,调用用户所加入的响应函数(如Fo
2、rm1_MouseDown1和Form1_MouseDown2),而且调用顺序和用户添加顺序一致。 根据这个流程,我做了个模仿程序,有不足的地方还请大家提供更完善的补充。 usingSystem; //创建一个委托,返回类型void,两个参数 publicdelegatevoidKeyDownEventHandler(objectsender,KeyEventArgse); //数据参数类 classKeyEventArgs:EventArgs { privatecharkeyCha
3、r; publicKeyEventArgs(charkeyChar) :base() { this.keyChar=keyChar; } publiccharKeyChar { get{returnkeyChar;} } } //模仿Application类 classM_Application { publicstaticvoidRun(M_Formform) { boolfinished=false; do { Console.WriteLine("Inpu
4、tachar"); stringresponse=Console.ReadLine(); charresponseChar=(response=="")?'':char.ToUpper(response[0]); switch(responseChar) { case'X': finished=true; break; default: //得到按键信息的参数 KeyEventArgskeyEventArgs=newKeyEventArgs(responseChar); //向
5、窗体发送一个消息 form.WndProc(keyEventArgs); break; } }while(!finished); } } //模仿窗体类 classM_Form { //定义事件 publiceventKeyDownEventHandlerKeyDown; publicM_Form() { this.KeyDown+=newKeyDownEventHandler(this.M_Form_KeyDown); } //事件处理函数 privatevoid
6、M_Form_KeyDown(objectsender,KeyEventArgse) { Console.WriteLine("Capturekey:{0}",e.KeyChar); } //窗体处理函数 publicvoidWndProc(KeyEventArgse) { KeyDown(this,e); } } //主程序运行 classMainEntryPoint { staticvoidMain() { M_Application.Run(newM_Form()
7、); } }
此文档下载收益归作者所有