下载此文档

CWndProc的使用方法.doc


文档分类:通信/电子 | 页数:约20页 举报非法文档有奖
1/20
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/20 下载此文档
文档列表 文档介绍
c#委托与事件心得
c#用委托来实现事件通知机制。委托相当与c++函数指针。整个过程涉及一个呼叫者,一个被呼叫者,还有就是这个委托。
- 实现步骤
有以下几步: 1. 申明委托, , (被调用的函数)
,在包里或者类里,public
public delegate void PlayGame(Object sender, EventArgs e);
(类LetsGame)和调用委托的函数,在呼叫者里要有委托的实例(呼叫者扔出一个委托,被呼叫者给这个委托赋值)
class LetsGame{
public event PlayGame theGame;
public void startPlay(EventArgs e){
if(theGame != null){
theGame(this,e);
}
}
3. 定义被呼叫者(类MS)和具体实现的函数(被调用的函数),也就是concrete class的实现或者叫函数指针实例。打个比方,.
class MS {
public MS(LetsGame lg) {
+= new PlayGame(MSPlayGame);
}
public void MSPlayGame(Object sender, EventArgs e){
("Who laughs the last who wins");
}
}
.
- 实际应用
对照一下c#的web控件事件处理,
private void ponent()
{

+= new ();

}
private void Button1_Click(object sender, e)
{
//do sth
}
,早就帮我们做好了该项工作,. Button1相当于上面的LetsGame的实例,是呼叫者, Button1后,Button1就会调用Button1_Click.
-杂项
我觉得这种机制和design pattern里的observer很类似,我们完全可以用observer来达到同样的效果,但是用委托更灵活,不需要定义一个interface然后所有的concrete class都实现某个方法,函数指针(委托)更灵活.
还有,委托不一定非要和事件一起用,单独用的时候就是函数指针.
-------------------------------------------------------------------------------
WndProc(ref Message m)
protected override void WndProc(ref Message m)
{
const int MAND = 0x0112;
const int SC_CLOSE = 0xF060;
if ( == MAND && (int) == SC_CLOSE)
{
// 屏蔽传入的消息事件
= ;
return;
}
(ref m);
}
protected override void WndProc(ref Message m)
{
const int MAND = 0x0112;
const int SC_CLOSE = 0xF060;
const int SC_MINIMIZE = 0xF020;
if ( == MAND && ((int) == SC_MINIMIZE || (int) == SC_CLOSE))
{
//最小化到系统栏
();
return

CWndProc的使用方法 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数20
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zhongxinado
  • 文件大小81 KB
  • 时间2018-08-18