您的位置:首页 > 编程语言 > C#

C#开发WINDOWS应用程序时消息的处理

2007-10-27 07:56 567 查看
2001年03月30日 15:19:00
C#开发WINDOWS应用程序时消息的处理
C#学习笔记之二

作者:浙江省温岭市电信局 王骏

WINDOWS应用程序是靠消息驱动的,在VC中我们通过CLASSWIZARD可以为某窗口类添加消息处理函数,CLASSWIZARD将为你添加消息映射,对于WINDOWS消息,生成的消息处理函数重载了基类的虚拟方法。而在C#中如何处理消息呢?本文针对VS.NET BETA1环境下的C#简单地介绍WINDOWS消息以及自定义消息的处理方法。

示例代码下载 17K

一、生成一个名为MSGApplication的工程
工程的建立方法请参考:C#学习笔记之一
二、处理WM_PAINT消息
我们以WM_PAINT消息的处理为例,在C#中处理消息与MFC的消息处理是类似的,但更为简单。MFC中需要使用DECLARE_MESSAGE_MAP来定义消息映射,在C#就不需要了。比如WM_PAINT消息,我们只要重载父类中的OnPaint虚拟方法即可(虽然在BETA1中重载父类虚拟方法的操作过程有点繁琐),方法如下:
在菜单View-三、自定义消息的处理
为了处理的方便,在这里我们将需要使用到的自定义消息封装成一个类,类的添加过程如下:
在ClassView中选中我们的工程MSGApplication,按下鼠标右键,在弹出菜单中选择Add-C#学习笔记之一[/url])
向主视窗发送TEST1自定义消息,具体代码如下:
protected void button1_Click (object sender, System.EventArgs e){	SendMessage(WM.TEST1,100,200);}
消息已经发出了,在Form1中我们如何对该消息作出响应呢?我们可以重载 DefWndProc方法。
protected override void DefWndProc ( ref System.WinForms.Message m ){	switch(m.msg)	{	case WM.TEST1:		///string与MFC中的CString的Format函数的使用方法有所不同		string message = string.Format("收到消息!参数为:{0},{1}",m.wParam,m.lParam);		MessageBox.Show(message);///显示一个消息框		break;	default:		base.DefWndProc(ref m);///调用基类函数处理非自定义消息。		break;	}}
程序运行结果如图



当我们点发送消息按钮,弹出消息框并显示收到的参数。
后记:可以预料在VS.NET BETA1的后继版本中对上述过程的操作会有很大改变,但原理是一致的。让我们期待更完美的C#展现在我们面前。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=3419
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: