大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> NET专区 -> C#开发WINDOWS应用程序时消息的处理

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

时间: 2021-07-31 作者:daque

windows运用步调是靠动静启动的,在vc中咱们经过classwizard不妨为某窗口类增添动静处置因变量,classwizard将为你增添动静映照,对于windows动静,天生的动静处置因变量重载了基类的假造本领。而在c#中怎样处置动静呢?正文对准vs.net beta1情况下的c#大略地引见windows动静以及自设置动静的处置本领。一、天生一个名为msgapplication的工程工程的创造本领请参考:c#进修条记之一二、处置wm_paint动静咱们以wm_paint动静的处置为例,在c#中处置动静与mfc的动静处置是一致的,但更为大略。mfc中须要运用declare_message_map来设置动静映照,在c#就不须要了。比方wm_paint动静,咱们只有重载父类中的onpaint假造本领即可(固然在beta第11中学重载父类假造本领的操纵进程有点烦琐),本领如次:在菜单view->other windows->object browser翻开东西欣赏窗口(或用ctrl+alt+j翻开),在咱们的工程名下找到form并选中,这时候在右边的窗口列出一切form类的分子因变量,如图所示:咱们选中onpaint(system.winforms.painteventargs)此时在底下会表露完备的onpaint因变量protected void onpaint ( system.winforms.painteventargs e )咱们将这一条龙字符串copy下来。翻开form1.cs举行代码编纂,咱们把方才正片下来的因变量设置复制到form1类内里,并加上override要害字,此时咱们便不妨在内里增添咱们的动静处置代码了,请参考如次代码段:protected override void onpaint ( system.winforms.painteventargs e ) {font font = new font("黑体",28);///设置字体:黑体,巨细:28solidbrush bluepen = new solidbrush(color.blue);///创造蓝色画笔solidbrush blackpen = new solidbrush(color.fromargb(0xa0,0xa0,0xb0));///创造玄色画笔e.graphics.drawstring("vc常识库",font,blackpen,65,25);///写入符串e.graphics.drawstring("vc常识库",font,bluepen,61,21);///偏移4个音素用各别的脸色再写一次,到达立体功效}对于其它动静的处置以及对其它父类假造因变量的重载都不妨沿用同样的本领。 三、自设置动静的处置为了处置的简单,在这边咱们将须要运用到的自设置动静封装成一个类,类的增添进程如次:在classview当选中咱们的工程msgapplication,按下鼠标右键,在弹出菜单中采用add->add class,弹出class wizard,咱们将类定名为wm,其他选项未便,确认实行类的增添。咱们为wm类增添两个分子变量,见如次代码:public class wm{public const int user = 0x0400;public const int test1 = user+1;}咱们在form第11中学增添一个按钮,并为该按钮增添事变处置代码(假设您对这个进程不熟习,请参考:c#进修条记之一)向主视窗发送test1自设置动静,简直代码如次:protected void button1_click (object sender, system.eventargs e){sendmessage(wm.test1,100,200);}动静仍旧发出了,在form第11中学咱们怎样对该动静作出相应呢?咱们不妨重载 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#展此刻咱们眼前。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.