c# wndproc的使用方法

c# wndproc的使用方法

ID:14408280

大小:79.50 KB

页数:32页

时间:2018-07-28

c# wndproc的使用方法_第1页
c# wndproc的使用方法_第2页
c# wndproc的使用方法_第3页
c# wndproc的使用方法_第4页
c# wndproc的使用方法_第5页
资源描述:

《c# wndproc的使用方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C#WndProc的使用方法C#WndProc的使用方法.txt我们用一只眼睛看见现实的灰墙,却用另一只眼睛勇敢飞翔,接近梦想。男人喜欢听话的女人,但男人若是喜欢一个女人,就会不知不觉听她的话。c#委托与事件心得c#用委托来实现事件通知机制。委托相当与c++函数指针。整个过程涉及一个呼叫者,一个被呼叫者,还有就是这个委托。-实现步骤有以下几步:1.申明委托,2.定义呼叫者和调用的函数,3.定义被呼叫者和具体实现的函数(被调用的函数)1.申明委托,在包里或者类里,publicpublicdelegatevoidPlayGam

2、e(Objectsender,EventArgse);2.定义呼叫者(类LetsGame)和调用委托的函数,在呼叫者里要有委托的实例(呼叫者扔出一个委托,被呼叫者给这个委托赋值)classLetsGame{publiceventPlayGametheGame;publicvoidstartPlay(EventArgse){if(theGame!=null){theGame(this,e);}}3.定义被呼叫者(类MS)和具体实现的函数(被调用的函数),也就是concreteclass的实现或者叫函数指针实例。打个比方,在一

3、个叫MS的类中实现.MS中对呼叫者中委托的实例进行赋值.classMS{publicMS(LetsGamelg){lg.theGame+=newPlayGame(MSPlayGame);}publicvoidMSPlayGame(Objectsender,EventArgse){Console.WriteLine("Wholaughsthelastwhowins");}}这样当调用LetsGame.startPlay的时候就会调用MS.MSPlayGame.-实际应用对照一下c#的GUI事件处理或者asp.net的web控

4、件事件处理,能帮我们更好的理解委托和事件.大家一定很熟悉asp.net里下面的代码privatevoidInitializeComponent(){this.Button1.Click+=newSystem.EventHandler(this.Button1_Click);}privatevoidButton1_Click(objectsender,System.EventArgse){//dosth}这就是用委托来实现事件.你可能发现我们并没有给它声明委托对象并通过event关键字来引用该委托对象,那是因为asp.net

5、早就帮我们做好了该项工作,其委托对象是System.EventHandler.Button1相当于上面的LetsGame的实例,是呼叫者,Button1_Click是被呼叫方法.当你clickButton1后,Button1就会调用Button1_Click.-杂项我觉得这种机制和designpattern里的observer很类似,我们完全可以用observer来达到同样的效果,但是用委托更灵活,不需要定义一个interface然后所有的concreteclass都实现某个方法,函数指针(委托)更灵活.还有,委托不一定非

6、要和事件一起用,单独用的时候就是函数指针.-------------------------------------------------------------------------------WndProc(refMessagem)protectedoverridevoidWndProc(refMessagem){constintWM_SYSCOMMAND=0x0112;constintSC_CLOSE=0xF060;if(m.Msg==WM_SYSCOMMAND&&(int)m.WParam==SC_CLOSE)

7、{//屏蔽传入的消息事件this.WindowState=FormWindowState.Minimized;return;}base.WndProc(refm);}protectedoverridevoidWndProc(refMessagem){constintWM_SYSCOMMAND=0x0112;constintSC_CLOSE=0xF060;constintSC_MINIMIZE=0xF020;if(m.Msg==WM_SYSCOMMAND&&((int)m.WParam==SC_MINIMIZE

8、

9、(int)

10、m.WParam==SC_CLOSE)){//最小化到系统栏this.Hide();return;}base.WndProc(refm);}----------------------------------------------不规则窗体拖动usingSystem.Runtime.InteropSe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。